Docker (2) - 別サーバーのDockerを利用する -
別サーバー上にあるDockerにイメージをデプロイしたりコンテナを起動したりの操作をしたい時
export DOCKER_HOST=192.168.1.100
とやったりすることで別サーバー上にあるDockerを操作できたりとかできるんですが既に推奨されておらず実際にやると警告が出たりする
じゃあどうやるのかと。docker contextを使えとのこと
contextを登録
docker context create \
--docker host=ssh://192.168.1.100 \
--description="remote sevrer" \
my-remote-server
でcontextを作る。もちろんsshって書いてるのでSSH Serverが必要
登録したcontextを使用するように設定
docker context use my-remote-server
これでdocker infoとかやると別サーバー上のDockerが使用されているかを確認。ちなみに元に戻す場合は
docker context use default
でオッケーっぽい
参考: https://docs.docker.com/engine/security/protect-access
ちなみに
Dockerのsystemdで
[Service]
ExecStart=/usr/bin/dockerd -H "tcp://192.168.1.100:2375" -H fd:// --containerd=/run/containerd/containerd.sock
みたいに-HオプションつければDocker Daemonのポート開けれる
追記
TLS接続もできるので上記サイト通りに証明書生成してサーバー側のdockerd起動オプションの書き換えを設定したら問題なくTLS接続できる模様。その際Docker Contextを作ってやる場合
docker context create \
--docker "host=tcp://192.168.1.100:2376,ca=/path/to/.docker/ca.pem,cert=/path/to/.docker/cert.pem,key=/path/to/.docker/key.pem" \
my-remote-server
やって作らないといけないっぽい?