Docker コンテナを起ち上げた後、とあるサブネットのクライアントから別のサブネットの特定のサーバに対してだけ突然 SSH ができなくなり ping も通らなくなったとき

理由

  • 異なるサブネットから 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)

 115 10:51:08 hogehost systemd[1]: docker.service: Scheduled restart job, restart counter is a>
 115 10:51:08 hogehost systemd[1]: Stopped Docker Application Container Engine.
 115 10:51:08 hogehost systemd[1]: docker.service: Start request repeated too quickly.
 115 10:51:08 hogehost systemd[1]: docker.service: Failed with result 'exit-code'.
 115 10:51:08 hogehost systemd[1]: Failed to start Docker Application Container Engine.

結論

Docker (Docker Compose) で立ち上げたコンテナがポートを専有していた*1 おそらくこちらです。

github.com

解決方法

当該サーバに SSH できるクライアントから入って*2、コンテナを止める*3

それでもダメなようならば、Docker を一度アンインストールしてインストールし直す(こちらの方が確実かと思います)。再インストールの方法は公式ページに従います.

docs.docker.com

アンインストールは以下のとおりです。

$ 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 を編集する方法が見つかりますが、まずは再インストールから試すのが手かと思います。

*1:可能性が高い。ルーティング?

*2:止める原因を作ったマシンからは SSH できないようです

*3:最悪、最小限構成で物理で繋いで止める

Powered by はてなブログ