突然 docker start 時にエラーが出る

スポンサーリンク

概要

自分の時は下記のようなことが起きました。

  1. Proxy 用の Apache を停止したところ、なぜか Docker コンテナで Listen していたポートもなくなってしまった
  2. そのため、docker-compose stop/start しようとしたところ、stop は正常だったが、start は失敗

上記の失敗時には下記のようなエラーが出ました。

% docker-compose start
 Starting mysql  … error
 Starting apache … error
 ERROR: for mysql  Cannot start service mysql: driver failed programming external connectivity on endpoint memo_mysql (cff13602fe314d667b115b445f6c9ac245d26d3bc005c8756337fd1b79e7a578):  (iptables failed: iptables --wait -t filter -A DOCKER ! -i br-57328113384a -o br-57328113384a -p tcp -d 172.24.0.2 --dport 3306 -j ACCEPT: iptables: No chain/target/match by that name.
  (exit status 1))
 ERROR: No containers to start

対処方法

結論から言うと、下記のサイトの通り Docker を再起動することで解消しました。
https://blue1st-tech.hateblo.jp/entry/2017/01/29/232733

systemctl restart docker

上記のサイトに詳しく書かれていますが、どうやら Docker では独自に iptables に設定を作成しているようで、それを知らずに iptables を初期化してしまったりすると問題が起きるようです。
実際、Docker を再起動する前後で iptables -L などで設定を確認してみると、いろいろと設定が変わっていることがわかります。
自分の場合も、iptables の設定はチョイチョイ変更しているので、思い当たることが多々あったのでした。。。
ただ、今回完全に不通となったタイミングでは iptables は触っていなかったので、その辺については謎ですが。
いずれにしても、Docker を使っている環境では iptables の扱いには注意を払う必要があるようです。

コメント

タイトルとURLをコピーしました