サーバーのチューニング
サーバーへのDockerEngineのインストール
Linuxでのdockerのオーバーヘッドは最小限です。 Mac上のDockerはLinux仮想マシンで実行されますが、Linuxではホストのカーネルを直接使用します。これについて詳しくは、こちらをご覧ください。
小さなpingは私たちにとって重要なので、モスクワでホスティングを購入するのは理にかなっていますが、大きな違いはありません。
合計:Linux、モスクワ、特性はニーズによって異なります。
そここのためだけの安価な既製の関税である上ruvds.comが。また、ruvds.comでは、DockerCEを搭載したセットアップをすぐに注文できます。ささいなことですが、いいです。
パスワードを探し、ホスティングのWebインターフェイスにログインして接続します。


次に、Dockerをインストールします。ここに優れた指示があります。以下に簡単にコマンドを示します(突然持って
sudoいない場合はapt-get install sudo、下からインストールすることを忘れないでくださいsu):
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
dockerの動作を確認しましょう:
docker run hello-world

キーの生成
まず、SSLキーを生成する必要があります。あなたは簡単で難しい道をたどることができます。ハードパス(正規)の手順については、Dockerのドキュメントを参照してください。しかし、善良な人々はそれをすべて10MB未満のコンテナに詰め込みました。
最初に、すべてを保存するフォルダーを作成しましょう。フォルダーは何でもかまいません。最初の(
/etc/docker/ssl)は秘密鍵を格納し、2番目の(~/.docker)はアクセス用の鍵を格納します。
sudo mkdir -p /etc/docker/ssl
mkdir -p ~/.docker
まず、ローカルフォルダにクライアントとCAの証明書を作成しましょう
docker run --rm -v ~/.docker:/certs \
paulczar/omgwtfssl
上で生成したCAを使用してサーバー証明書を作成しましょう。そこで、サーバーにアクセスするためのIPをコンマで区切って指定します。私たちの場合、そこでサーバーのIPを指定することを忘れないでください!
sudo cp ~/.docker/ca.pem /etc/docker/ssl/ca.pem
chown -R $USER ~/.docker
docker run --rm -v /etc/docker/ssl:/server \
-v ~/.docker:/certs \
-e SSL_IP=127.0.0.1,172.17.8.101,YOUR_IP \
-e SSL_DNS=docker.local -e SSL_KEY=/server/key.pem \
-e SSL_CERT=/server/cert.pem paulczar/omgwtfssl
dockerデーモンの構成
この段階での主なタスクは、dockerの起動時に必要なパラメーターを使用してコマンドライン引数をプッシュすることです。どのように行うかは重要ではありません。Ubuntuでは次のように行うことができます
。1。
/etc/default/dockerお気に入りのエディターでファイルを編集します。
nano /etc/default/docker
そして、最後に `DOCKER_OPTS`変数を追加します。そこに外部IPを挿入することを忘れないでください
DOCKER_OPTS="-H=YOUR_IP:2376 -H unix:///var/run/docker.sock --tlsverify --tlscacert=/etc/docker/ssl/ca.pem --tlscert=/etc/docker/ssl/cert.pem --tlskey=/etc/docker/ssl/key.pem"
2.サービスを開始するための引数を追加します。Ubuntuでは、起動パラメータファイルは
/lib/systemd/system/docker.serviceです。サブセクションに行を追加します[Service]。
EnvironmentFile=/etc/default/docker
そして、起動コマンドを並べて変更します。
ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS
はい、ポイント1はオプションであり、コマンド引数もここに挿入できますが、それらは多数あり、サービスファイルで実行する大きなコマンドがあると不便です。
3.デーモンを再起動します
sudo systemctl daemon-reload
sudo systemctl restart docker
4.デーモンログをチェックして、すべてが機能することを確認します。
journalctl -u docker.service -f

5. TLS経由で接続するレッツ・トライ:
export DOCKER_HOST=tcp://YOUR_IP:2376
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=~/.docker
docker info

ワーキング!
クライアントでの構成
クライアントの構成を開始する前に、certificatesフォルダーをコンピューターにダウンロードする必要があります。これは、任意の便利な方法で実行できます。たとえば、 `scp`経由:
リモートマシンの場合:
mkdir /tmp/cert-for-docker && cp -v ~/.docker/{ca,cert,key}.pem /tmp/cert-for-docker
ローカルマシン上:
scp -r root@YOUR_IP:/tmp/cert-for-docker ~/.docker
次に、このフォルダーを使用してdockerクライアントを構成します。
Mac OS CLI
ここでの設定は、環境に変数を登録する必要があり、すべてが機能するという事実に帰着します。ただし、次のような疑問が生じます。「裸のクライアントはどこで入手できますか? Docker Engineに付属している公式の2GBヘビーウェイトクライアントは必要ありませんか?」
解決策があります!最新のDockerは、長い間クライアントとサーバーの部分に分割されてきました。 macos用にコンパイルされた個別のクライアントバイナリをダウンロードできます。公式の手順はここにありますが、ここに簡単な抜粋を示します
。1。最新のバイナリまたはサーバーに対応するバイナリ(コマンドで引き出すことができます
docker info)をリンクからダウンロードして解凍します
。2。バイナリをフォルダー
/usr/local/bin/にコピーしてグローバルに機能させます。
sudo cp docker/docker /usr/local/bin/
3.
~/.bashrcまたは~/.zshrc必要な環境変数に登録します。IPと証明書付きのフォルダへのパスを挿入することを忘れないでください:
export DOCKER_HOST=tcp://YOUR_IP:2376
export DOCKER_CERT_PATH=PATH_TO_CERT
export DOCKER_TLS_VERIFY=1
4.コンピューターを再起動し(確かにSchaub)、以下を確認します。
docker info
docker run hello-world

美しさ!
Jetbrains IDE(PyCharm、IDEA、Android Studioなど)
Jetbrainsスタジオは、箱から出してtlsを介してdockerをサポートします。この設定はにあり
Preference->Build, Execution, Deployment->Docker->+ます。TCP socketそこに詳細を選択して入力する必要があります。ただし、落とし穴があります。

すべてが意図したとおりに行われると、エラーが発生します。
デーモンからのエラー応答:クライアントがHTTPSサーバーにHTTP要求を送信しました。または
エラーかなり印刷情報
接続できません:ステータス400:クライアントがHTTPSサーバーにHTTP要求を送信しました使用するプロトコルをスタジオに明示的に規定する必要があります
https。
YOUR_IP:2376その後、すべてが正常に機能するはずです。
ボーナス(Portainer)
実行中のコンテナとすでに使用されているコンテナを効果的に追跡するために、このサーバーにPortainerをインストールしました。次の2行に配置する必要があります。
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
その後、
YOUR_IP:9000美しいWebインターフェイスがハングアップし、実行中のコンテナと強制終了されたコンテナを確認できます。私たちがどのように始めたhello-worldか覚えていますか?ここにあり、インターフェースから直接クリーニングできます。

Portainer自体は任意のDockerマシンに接続でき、すべてのマシンのDockerコンテナを1か所から管理できます。メトリック(Grafana + Prometheus + Alerts)は、2つのコマンドで同じように簡単に設定できます(インストール
gi とを忘れないでくださいdocker-compose)。
git clone https://github.com/stefanprodan/dockprom && cd dockprom
ADMIN_USER=admin ADMIN_PASSWORD=admin docker-compose up -d


ストレージの場合のみ、に変更
sum(node_filesystem_free_bytes{fstype="aufs"})する必要がありますsum(node_filesystem_free_bytes{fstype="ext4"})

結論
ラップトップを購入したとき、特にJava / Androidの開発には十分であるため、どのようなタスクにも十分であるとは思っていませんでした。しかし、私は嬉しい驚きを覚えました。これまでのところ、個人的なプロジェクトやオープンソースのプロジェクトはすべてIDEで実行されています。しかし、私はこのタイプライターに対する私のすべての愛のために、それがDockerを排除しないことに気づきました。リモートドッカーサーバーで一度設定できてとても嬉しかったです。開発プロセス中、サーバーがローカルではないことはまったく認識できません。制限は感じません。ほとんど意味がなくなる前に、インターネットなしでDockerを実行することはすべて同じです。一般的に、私は非常に満足しています。 -強力で重いラップトップを購入する1つの理由。
さらに、LinuxのDockerオーバーヘッドは最小限であるため、ロシア連邦のRuVDSから月額240ルーブルで車を借りることができます(HABRプロモーションコードを使用すると割引が適用されます)-10%以下)、pingやサーバーアプリケーションがUIに与える影響について心配する必要はありません。さらに、外部IP(クライアントを表示して開発サンドを維持する機能)、プライベートVPN、およびトップクラスの信頼性があります。全体的に、私は満足しています。
リソース:
- CoreOSのカスタマイズに関する2016年の記事
- 暗号化なしのDockerリモートAPI
- Dockerサイトと記事自体にリンクされているすべてのリソース
