21
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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

事の発端

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コンテナが起動できたことを確認しました

21
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?