re:inventing the wheel

それでも車輪は回っている

CentOS7にDockerをインストールし、TCP経由でAPIを利用できるようにする

CentOS7になり、Dockerが標準のyumリポジトリに追加されていたのでインストールメモです。

インストールする

公式ドキュメントのInstalling Docker - CentOS-7にもありますが、

1
$ sudo yum install docker

にてインストールすることができます。
ただし、2015/01/13時点ではちょっと古くVersionは1.3.2(最新は1.4.1)でした。

dockerを起動するには、以下のようにして起動します。

1
$ sudo systemctl start docker

TCP経由でRemoteAPIを利用できるようにする。

デフォルトではfdのみなのでローカルホストからしかdockerコマンドを利用できませんが、TCPソケットを有効にして リモートマシンからもコントロールできるようにします。
ドキュメント上、以前は Port:4243を使用していましたが、メジャーバージョンから Port:2375に変わっています。

有効にするには、/etc/sysconfig/dockerのOPTIONSに-H tcp://0.0.0.0:2375を追加します。

1
2
# Modify these options if you want to change the way the docker daemon runs
OPTIONS=--selinux-enabled -H fd:// -H tcp://0.0.0.0:2375
1
2
$ sudo systemctl stop docker
$ sudo systemctl start docker

なお、CoreOSのドキュメントではデーモンの起動オプションではなく、/etc/systemd/system/docker-tcp.socketファイルを作成し下記ように記述します。

1
2
3
4
5
6
7
8
9
10
[Unit]
Description=Docker Socket for the API

[Socket]
ListenStream=2375
BindIPv6Only=both
Service=docker.service

[Install]
WantedBy=sockets.target
1
2
3
4
5
$ sudo systemctl enable docker
$ sudo systemctl enable docker-tcp.socket
$ sudo systemctl stop docker
$ sudo systemctl start docker-tcp.socket
$ sudo systemctl start docker

まだsystemdの知見が低いため、どちらの設定が良いのかは調査中です。

TCP経由でリモートのdockerをコントロールする

基本的にはdocker cliの利用方法は変わりませんが、ホスト指定が必要になります。

1
docker -H tcp://127.0.0.1:2375 ps

なお、毎回 -H tcp://(接続先ホスト):(ポート番号) を入力するのは面倒くさいので環境変数DOCKER_HOSTを設定します。 bash系であれば以下のように設定します。

1
export DOCKER_HOST=tcp://localhost:2375

どうしても最新版Dockerを使用したい場合

インストレーションドキュメントのBinariesにもありますが、 以下のようにして最新版のバイナリを取得することができます。

1
2
$ wget https://get.docker.com/builds/Linux/x86_64/docker-latest -O docker
$ chmod +x docker

ちゃんとした動作確認はしていませんが、ダウンロードしたバイナリを/usr/bin/dockerに上書きするとバージョンは上がりました。

1
2
3
4
$ sudo systemctl stop docker
$ sudo mv /usr/bin/docker /usr/bin/docker-1.3.2
$ sudo mv ./docker /usr/bin/docker
$ sudo systemctl start docker

とはいえ、無理やりバージョンを変えているので、美しくはないですね。。。
どうしても最新を利用したい場合はSRPMから自作したほうが良いと思います。


とりあえず、本エントリーは以上です。