docker

ローカルからリモートのDockerホストにdockerコマンドを投げる

目的

リモートにあるDockerホストに対してローカルのDockerクライアントからアクセスする。

イメージ的には、

------------------------------                                --------------
|ローカル端末(dockerクライアント)| ------($docker hogehoge)------>| Dockerホスト|
------------------------------                                --------------

とする。

前提

  • Ubuntu 16.04
  • Docker 17.09.0-ce
  • DockerホストのIPアドレスは192.168.56.102

手順

docker.serviceファイルの修正

あまりお行儀がよくないけれども、直接 docker.serviceを修正する。

# vim /lib/systemd/system/docker.service

修正ポイント

修正前
ExecStart=/usr/bin/dockerd -H fd://
修正後
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H fd://

dockerdの再起動

dockerデーモンの再起動を行う。

# systemctl daemon-reload
# systemctl stop docker
# systemctl start docker

動作確認

先ほど設定した0.0.0.0:2376でListenしてくれているかをnetstatを使って確認する。

netstatによる確認
# netstat -ntap | grep :2376
tcp6       0      0 :::2376                 :::*                    LISTEN      4315/dockerd

ローカルのマシンからコマンドを投げてみる。
-H tcp://IPアドレス:ポート番号でリモートのソケットに接続できる。

動作確認
$ docker -H tcp://192.168.56.102:2376 info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 2
Server Version: 17.09.0-ce
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 2
 Dirperm1 Supported: true
~~~~略~~~~

どうやら動いているようだ。
以下のようにすることでdocker-composeもリモートサーバにお願いできる
bash:リモートでdocker-compose
$ docker-compose -H tcp://192.168.56.102 up -d