ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

Docker Remote APIを使ってコンテナーを色々なホストに振り分ける

Docker Remote APIという便利でかつ簡単に利用可能なAPIがあるというのを最近知りました。 Docker Remote APIを使うと何が便利かというと...

  • クライアントからリモートのDcokerホストでコンテナーを起動できる
  • 起動パラメーターをちょこっと変えるだけでリモートから操作を受け付けるDockerホストとして運用可能

これは便利! ...以下、参考にしたサイトです。

docs.docker.com

d.hatena.ne.jp

Ubuntu 16.04を使う場合は次の通りです。

Dockerクライアントの構築

クライアント側はDockerを入れて、サービスを止めます。

$ sudo apt update && sudo apt-get install docker.io
$ sudo systemctl disable docker && sudo systemctl stop docker

Dockerサーバーの構築

サーバーは次のように構築します。

$ sudo apt update && sudo apt-get install docker.io

$ sudo vi /lib/systemd/system/docker.service
...
#ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS  ←元々の設定
ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS -H tcp://0.0.0.0:2375 ←TCP接続を受け付ける

設定反映のためにサービスの再起動

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker.service

ここまでできたらクライアントマシンでexport DOCKER_HOSTしたあと、dockerコマンドを通常のように実行して操作するだけです。簡単ですね。

操作端末上ののローカルのDockerを操作したい場合(当然ながら、サービスを起動する必要あり)
export DOCKER_HOST=""

操作端末からDocker Remote APIを有効にしたリモートのDockerホストを操作
export DOCKER_HOST="tcp://192.168.0.250:2375"

上記はcase文か何かでシェルスクリプトとか書いておけば良いと思います。

ちなみにいずれDockerは、Dockerエンジンとクライアントは分離されるようです。将来の手順ではDockerクライアントをインストールするときのパッケージ名が変わってくるかもしれません。執筆時点では先にご紹介した通りです。

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。