どういうわけか、家のIntel Mac mini 2018のDockerコンテナで、LAN内の他マシンにアクセスできない状態になっていた。原因について色々調べていたけれど結局わからず、最終的にnetwork全部削除して再作成という力業をしたという話。
症状
Intel Mac mini 2018 + Docker Desktopで管理しているコンテナから、LAN内の他マシンに一切アクセスできない。インターネットには繋がる。LANだけいかない。具体的にはpingが通らない。IPアドレス指定してもダメ。ただしルータには届く。host.docker.internalでホストマシンに接続もできる。また、外部からのアクセスは通る。
まったく同じDockerfileを食わせた他のMacでは、AppleSiliconなやつでもIntelなやつでも、問題なくコンテナ内から他サーバと通信できる。
……色々調べたが、原因はわからなかった。お手上げ。明らかにおまかんで、なにか衝突していそうな気もしたが、Docker不勉強過ぎてわからない。Docker全部消せばなおるんだろうなという気はしたが、さすがにそれは……。
対応
全部消すくらいなら、networkの再作成だけやるほうがマシだろう。神に縋る気持ちで以下を実行した。
docker stop $(docker ps -aq)
docker network prune
これは危険性のあるコマンドで、今あるDockerのネットワークが全部消えてしまう。
自分の場合は、すべてdocker composeでコンテナを作成していたので、いったんそれらのコンテナを全部 docker compose down
で消したうえで、再度 docker compose up -d
で再作成することになった。
結果、LAN内のPCにアクセスできるようになった。Docker Desktop自体はだいぶ前から入れていて、わけもわからないままにチュートリアルのコマンドなど散々うってきたので、環境がぶっ壊れていたのだろうか。うーん、マジでなんだったんだろう……。
コメント