はじめに
- docker も日々進化
- Ubuntu で docker のバージョンを 0.8.1 にアップグレードしたら docker が起動しなくなってかなり焦った
- 一応、解決したのでメモ
- 調査の段階で発見があったのでメモ
ことの経緯
フワッと apt-get install lxc-docker
フワッと apt-get install lxc-docker
したら 0.8.1 にアップグレードされたので docker version
すると...
invalid value "tcp://127.0.0.1:4243/" for flag -H: Invalid bind address format: 127.0.0.1:4243/
ん?なんか、変わった??
ps aux | grep docker
kappa 4685 0.0 0.0 14616 936 pts/1 S+ 10:26 0:00 grep docker
ありゃ、docker 起動してないし。
調査
/var/log/upstart/docker.log を確認
Ubuntu の場合 docker のデーモンは upstart で管理されているのでデーモンのログは...
/var/log/upstart/docker.log
に出力される(らしい)。これを確認すると...
invalid value "tcp://127.0.0.1:4243/" for flag -H: Invalid bind address format: 127.0.0.1:4243/
と出力されている。ほうほう、どうやら -H
オプションの書き方か何かが変わった模様。
原因
/etc/init/docker.conf
/etc/init/docker.conf に以下のような設定が入っていたのが docker デーモンが起動しなかった理由。
--- docker.conf.original 2014-02-22 10:31:23.082986513 +0900 +++ docker.conf 2014-02-22 10:31:43.154985884 +0900 @@ -11,5 +11,5 @@ if [ -f /etc/default/$UPSTART_JOB ]; then . /etc/default/$UPSTART_JOB fi - "$DOCKER" -d $DOCKER_OPTS -H=tcp://127.0.0.1:4243/ + "$DOCKER" -d $DOCKER_OPTS -H=tcp://127.0.0.1:4243 end script
ふう。
-H オプションで何かアカンかったのか?
試してみたところ -H オプションの書き方が悪かった。
tcp://127.0.0.1:4243/
では無くて...
tcp://127.0.0.1:4243
のようにポート番号の後のスラッシュを付けないのが正しい。
以前のバージョンでは発生していなかったことから、0.8.1 にアップデート以降 -H オプションのパス指定のチェックが厳密になったのかもしれない。
-H オプションをちょっと詳しく
-H
オプションは下記のようになっている。
-H, --host=[]: tcp://host:port, unix://path/to/socket, fd://* or fd://socketfd to use in daemon mode. Multiple sockets can be specified
Multiple sockets can be specified
とあり複数の docker デーモンを起動出来る変更が 0.7 以降位から加えられているので、もしかするとこの辺りから末尾のスラッシュは付けてはいけないようになったのかも。
ちなみに、0.6.6
で試して見たところ...
script /usr/bin/docker -d -H=tcp://127.0.0.1:4243/ end script
で docker デーモンは起動した。
ちなみに
古いバージョンの docker をインストール場合には以下のように実行する。
sudo apt-get install lxc-docker-0.6.0
また、apt-cache search lxc-docker
を実行すると lxc-docker のパッケージバージョンを確認することが出来る。
さいごに
- ホントに小ネタですいません
- でも、腑に落ちない...(以前は動作していたのになあ)