概要
自分の時は下記のようなことが起きました。
- Proxy 用の Apache を停止したところ、なぜか Docker コンテナで Listen していたポートもなくなってしまった
- そのため、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 の扱いには注意を払う必要があるようです。
コメント