理由
- 異なるサブネットから SSH して Docker コンテナを起ち上げたから
前提
- 他のサーバには問題ない
- 本当に「突然」のように感じた
- サーバは Raspberry Pi である
- エラーログとしては以下のような感じです
$ systemctl status docker.service ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Fri 2021-01-15 10:51:08 JST; 3s ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Process: 4804 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock > Main PID: 4804 (code=exited, status=1/FAILURE) 1月 15 10:51:08 hogehost systemd[1]: docker.service: Scheduled restart job, restart counter is a> 1月 15 10:51:08 hogehost systemd[1]: Stopped Docker Application Container Engine. 1月 15 10:51:08 hogehost systemd[1]: docker.service: Start request repeated too quickly. 1月 15 10:51:08 hogehost systemd[1]: docker.service: Failed with result 'exit-code'. 1月 15 10:51:08 hogehost systemd[1]: Failed to start Docker Application Container Engine.
結論
Docker (Docker Compose) で立ち上げたコンテナがポートを専有していた*1。
おそらくこちらです。
解決方法
当該サーバに SSH できるクライアントから入って*2、コンテナを止める*3。
それでもダメなようならば、Docker を一度アンインストールしてインストールし直す(こちらの方が確実かと思います)。再インストールの方法は公式ページに従います.
アンインストールは以下のとおりです。
$ sudo apt-get purge docker-ce docker-ce-cli containerd.io $ sudo rm -rf /var/lib/docker
再インストールは以下のとおりです。
$ sudo apt install -y docker-ce docker-ce-cli containerd.io
感想
初めてのことだったのでルータの設定やファイアウォールの設定などをひっくり返して小一時間悩みました。とはいえ「突然」に起きたことだったので、まさか Docker のコンテナが原因であるとは思っておらず、手探りの中で原因を探しました。
ただ、直前の動作はたしかに $ docker-compose up
でした。
補足
ウェブを検索すると /lib/systemd/system/docker.service
を編集する方法が見つかりますが、まずは再インストールから試すのが手かと思います。