Dockerコンテナ内からLAN内のマシンにアクセスできなかったので、network再作成した

どういうわけか、家の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自体はだいぶ前から入れていて、わけもわからないままにチュートリアルのコマンドなど散々うってきたので、環境がぶっ壊れていたのだろうか。うーん、マジでなんだったんだろう……。

本サイトはUXを悪くするevilなGoogle広告を消しました。応援してくださる方は おすすめガジェット を見ていってください!
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次