Help us understand the problem. What is going on with this article?

firewalld再起動後のDockerコンテナ起動失敗

More than 1 year has passed since last update.

トラブルシューティングとして備忘録的に書いてます

事の発端

firewalldで閉じるように設定されていたSSHポートがいつの間にか開いていた:scream:
原因は不明だが、firewalldが停止していた可能性があったためfirewalldを再起動したようです

その後、dockerで動かしてるredashのupgradeした時にコンテナが起動しなくなりました...:crying_cat_face:

現象

改めて現象を説明すると、redashをupgradeするため一旦コンテナを停止しました
この時はターミナル上は特にエラーもワーニングも出てなかったです

最新のredashイメージpullして、コンテナ起動した時に↓のエラーが発生して
コンテナ起動できなくなりました...:sweat_smile:
※ちなみに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が絡んでいるようなので
dockeriptablesをキーワードに調べると
どうやらDockerデーモンと、iptablesを作成するfirewallデーモンの起動順序が重要らしい

Why am I having network problems after firewalld is restarted?によると
1. iptablesはfirewallデーモンで作成される
2. iptablesは永続的ではなくシステムが起動するたびに作成される
3. dockerデーモンはコンテナ起動/停止時にネットワークを作成・破棄する
4. firewalldが起動・再起動するとき、iptalbesのDOCKERチェーンは削除される
ということが分かった。

上記1~4より起動順序を
 firewalldを起動
  ↓
 dockerデーモン起動
にしないといけないと分かった

結果

起動順序を
 dockerデーモンを一度停止
  ↓
 firewalldを起動
  ↓
 dockerデーモンを起動
にすることでdockerコンテナが起動できたことを確認しました

nanan
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away