トラブルシューティングとして備忘録的に書いてます
事の発端
firewalldで閉じるように設定されていたSSHポートがいつの間にか開いていた
原因は不明だが、firewalldが停止していた可能性があったためfirewalldを再起動したようです
その後、dockerで動かしてるredashのupgradeした時にコンテナが起動しなくなりました...
現象
改めて現象を説明すると、redashをupgradeするため一旦コンテナを停止しました
この時はターミナル上は特にエラーもワーニングも出てなかったです
最新のredashイメージpullして、コンテナ起動した時に↓のエラーが発生して
コンテナ起動できなくなりました...
※ちなみにredashのDBはホストにあったため無事
Creating network "redash_default" with the default driver
ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-c00823472107 -j RETURN: iptables: No chain/target/match by that name.
(exit status 1))
iptablesが絡んでいるようなので
docker
とiptables
をキーワードに調べると
どうやらDockerデーモンと、iptablesを作成するfirewallデーモンの起動順序が重要らしい
Why am I having network problems after firewalld is restarted?によると
- iptablesはfirewallデーモンで作成される
- iptablesは永続的ではなくシステムが起動するたびに作成される
- dockerデーモンはコンテナ起動/停止時にネットワークを作成・破棄する
- firewalldが起動・再起動するとき、iptalbesのDOCKERチェーンは削除される
ということが分かった。
上記1~4より起動順序を
firewalldを起動
↓
dockerデーモン起動
にしないといけないと分かった
結果
起動順序を
dockerデーモンを一度停止
↓
firewalldを起動
↓
dockerデーモンを起動
にすることでdockerコンテナが起動できたことを確認しました