環境がUbuntu15.04以降では、Systemdを利用していることも有りdocker engineの起動時に /etc/default/docker が参照されないので注意が必要です。

長らく 14.x を利用していましたが年も変わり2016年になりいい加減に 15.x を利用してみたところいきなりDockerの設定で躓いたので書いておきたいと思います。

多くのテキストでubuntu の場合には14.xをベースにして記載されていることも有り、dockerの設定ファイルは /etc/default/docker を変更する事が記載していますが 15.04 以降は /lib/systemd/system/docker.service を変更します。

今回変更したい内容は /etc/default/docker としては以下の内容です。

DOCKER_OPTS="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"

これはdocker daemon の起動オプションになります。

ユーザでのカスタム設定を行うので/etc/以下にコピーした後に修正します。

$ sudo cp -p /lib/systemd/system/docker.service /etc/systemd/system/docker.service

ExecStartでの引数を直に記載しています。

$ cat /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target docker.socket
Requires=docker.socket

[Service]
Type=notify
ExecStart=/usr/bin/docker daemon -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock
MountFlags=slave
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity

[Install]
WantedBy=multi-user.target

設定を反映させた後にサービスを再起動します。

$ sudo systemctl daemon-reload
$ sudo service docker stop
$ sudo service docker start
$ ps -ef | grep docker
root      2757     1  6 02:41 ?        00:00:00 /usr/bin/docker daemon -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock

これで DOCKER_OPTSが反映されました。

また私の環境ではクライアントとしてのdockerコマンドも環境変数を見ていない状態だったので DOCKER_HOST=”localhost:4243″ と指定して利用しました。

では、今年もよいコンテナライフを