CoreOSの自動アップデートでDocker環境が全滅した日
はじめに
先日、CoreOSの自動アップデートによりDockerで動かしていた検証用の環境が全滅 、という状況に遭遇したので原因と対応策を記しておきます。
環境
CoreOS 1576.2.0 (Beta channel)1
現象
2017/11/09 にDockerで動かしていたアプリケーションがまったく使えなくなる。ホストOSであるCoreOSは稼働しているが、docker ps
すると Cannot connect to the Docker daemon...
のエラーメッセージが返ってくる。稼働プロセスを確認すると確かにDockerデーモンのプロセスがなく、手動で systemctl start docker
しても起動しないという状況。
原因
journalctl -xe
でログを確認すると一目瞭然。Dockerの起動でコケていた。
Nov 09 14:27:01 my-dockerhost docker[957]: `docker daemon` is not supported on Linux. Please run `dockerd` directly
https://docs.docker.com/engine/deprecated/#docker-daemon-subcommand にあるとおり、Docker v1.13.0で非推奨となり v17.12 で削除2 となるため、代わりに dockerd
という別コマンドを使うように、とのこと。
確かに、アップデートされたCoreOSの1576.2.0 リリースノート も見てみると、Dockerのバージョンが 1.12.6
17.09.0
とついにv17系になっていた。念のためCoreOS上のDockerのバージョンを確認してみると...
$ docker --version
Docker version 17.09.0-ce, build afdb6d4
と確かにv17系になっている。
結論としては、Dockerのバージョンアップによりdocker daemon
が使えなくなったのが原因と思われる。
対応策
正しくdockerd
を使うようにDockerデーモンの起動方法を変えれば良い。CoreOSではsystemdを使って起動しているので docker.service
を修正する。
@@ -1 +1 @@
-ExecStart=/usr/bin/docker daemon --storage-driver=btrfs --host=fd:// $DOCKER_OPTS
+ExecStart=/usr/bin/dockerd --storage-driver=btrfs --host=fd:// $DOCKER_OPTS
後はsystemdのservice設定ファイルの変更を反映し、Dockerを起動して復旧完了。
sudo systemctl daemon-reload
sudo systemctl start docker
Dockerをダウングレードする手もある
この記事を書いている時に見つけたものですが、CoreOSのBlogに Toward Docker 17.xx in Container Linux というものが書かれていた3。/etc/coreos/docker-1.12
にyes
を書き込んでおくとダウングレードして使えるらしい。
ただし、このオプションは以下のスケジュールで無視されるようになり、結局はバージョンアップがいずれ必要になるので要注意。
June 6, 2018:
/etc/coreos/docker-1.12
is ignored in the alpha channel.
June 20, 2018:/etc/coreos/docker-1.12
is ignored in the beta channel.
July 18, 2018:/etc/coreos/docker-1.12
is ignored in the stable channel.
今後考えたいこと
CoreOSの自動アップデートをオフにしておけば今回のような障害は防げるものの、セキュリティとのトレードオフとなる。人柱環境という面もあるのでやはり積極的にアップデートしていきたい。
となると、OSアップデート後にDockerが起動しない状況になったらアップデートを一旦自動ロールバックするとかできればうれしいかなぁ...と思ったりもするのですが、CoreOSの自動アップデートってどこまで制御できるんでしょうかね?
Author And Source
この問題について(CoreOSの自動アップデートでDocker環境が全滅した日), 我々は、より多くの情報をここで見つけました https://qiita.com/wadahiro/items/2a0a02f4291872ee1dfe著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .