dockerデーモンが予期せず終了します
Dockerは明白な理由もなく終了し、私は何が起こったのかを理解しようとしています。
現在、dockerデーモンはロードされたサービスであり、終了ステータス0SUCCESSで非アクティブです。
$ systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Tue 2020-12-01 06:25:16 UTC;
Docs: https://docs.docker.com
Main PID: 2218 (code=exited, status=0/SUCCESS)
Dockerログを見ると、これはシグナル「終了」を処理したために発生しました。
$ journalctl -u docker.service | tail -25
Nov 30 18:30:21 ip-10-38-4-210 dockerd[2218]: time="2020-11-30T18:30:21.728694550Z" <redacted irrelevant>
Dec 01 06:25:05 ip-10-38-4-210 systemd[1]: Stopping Docker Application Container Engine...
Dec 01 06:25:05 ip-10-38-4-210 dockerd[2218]: time="2020-12-01T06:25:05.867748396Z" level=info msg="Processing signal 'terminated'"
Dec 01 06:25:16 ip-10-38-4-210 systemd[1]: Stopped Docker Application Container Engine.
その時点では、そのホストにログインしているユーザーはなく、Dockerデーモンを明示的に終了したユーザーもいませんでした。
- なぜこれが起こっているのですか、どのログが手がかりを提供できますか?
- 終了時に自動的に再起動するようにdockerdを構成できますか?
これは、x86-64上のUbuntu 16.04.6 LTS上のDockerバージョン18.09.7(ビルド2d0083d)です。
systemdとの関係はUnix.stackexchangeでここで尋ねられています
回答
Dec 01 06:25:05 ip-10-38-4-210 systemd[1]: Stopping Docker Application Container Engine...
この時点で、systemdはdockerに停止要求を送信しました。
Dec 01 06:25:05 ip-10-38-4-210 dockerd[2218]: time="2020-12-01T06:25:05.867748396Z" level=info msg="Processing signal 'terminated'"
Dockerはその停止要求を受け取り、正常に終了します。
Dec 01 06:25:16 ip-10-38-4-210 systemd[1]: Stopped Docker Application Container Engine.
Systemdは、停止が終了したことを報告します。10秒は、docker container stop
コマンドを適切に処理せず、10秒後に強制終了され、さらに1秒後に要求の処理を終了したコンテナーからのものである可能性があります。
したがって、提供されたログから、dockerdデーモンは要求どおりに機能しており、systemctl stop docker
コマンドを送信したものを確認する必要があります。
終了時に自動的に再起動するようにdockerdを構成できますか?
dockerdはsystemdを制御せず、systemdはdockerdを制御するため、systemd側から問題を解決する必要があります。
この特定のケースでは、dockerサービスを停止するようにsystemdに指示しているのは、Ubuntuバージョンのcontainerdパッケージの更新を適用するUbuntu無人更新サービスのようです。
https://bugs.launchpad.net/ubuntu/+source/containerd/+bug/1870514
私が推奨する修正は、この問題が発生していないように見えるアップストリームのDockerリポジトリからdockerをインストールすることです。
https://docs.docker.com/engine/install/ubuntu/