開発者向け
MacからDockerコンテナに接続できない
Mac上のDockerは、Linux仮想マシンの中でコンテナを実行します。macOSからコンテナに接続するには、ふつうはポートをlocalhostに公開します。
症状
curl localhost:8080は失敗するが、コンテナの中ではサービスが動いている。- コンテナのIPアドレスにpingや接続ができない。
- Macに
docker0インターフェイスが表示されない。 - Linuxではサービスが動くのにMacでは動かない。
考えられる原因
- ポートが公開されていない。
-pがないと、Docker DesktopはポートをMacに転送しません。 - Docker DesktopでのコンテナのIP。Docker Desktopに関するDockerのドキュメントによると、ブリッジネットワークにはホストから到達できません。
- サービスがコンテナ内の127.0.0.1で待ち受けている。この場合、接続できるのはコンテナ自身だけです。
- ポートの組み合わせが間違っている。
-p 8080:80では、8080がMacのポートで、80がコンテナのポートです。
確認方法
実行中のコンテナと、その公開ポートを一覧表示します。
docker ps出力PORTS列に
0.0.0.0:8080->80/tcpのような組み合わせが表示されます。組み合わせがなければ、ポートは公開されていません。1つのコンテナの公開ポートを表示します。
docker port my-containerイメージにwgetが含まれていれば、コンテナの中からサービスをテストします。応答があれば、サービスは動いています。
docker exec my-container wget -qO- http://localhost:80Mac上でそのポートを待ち受けているプロセスを確認します。
lsof -nP -iTCP:8080 -sTCP:LISTEN
解決方法
ポートを公開してコンテナを起動します。最初の数字がMac側のポートです。
docker run -d -p 8080:80 nginxMacから、localhostとMac側のポートで接続します。
curl http://localhost:8080コンテナ内のサービスが127.0.0.1ではなく0.0.0.0で待ち受けるようにします。設定方法はそのサービスのドキュメントを参照してください。
Mac側のポートが使用中なら、別のポートを選びます。Macでポートが使用中を参照してください。
OrbStackでは、コンテナのIPアドレスや
container-name.orb.localの名前も使えます。
Kilobatを使う場合
KilobatのチェックはMac上で実行されます。失敗しているコードがコンテナ内で動いている場合は
--context containerを使います。レポートの最後に、コンテナ内で実行するコマンドが表示されます。kilobat why http://localhost:8080 --context container
よくある質問
Docker Desktopでコンテナにpingできないのはなぜですか?
Dockerのドキュメントによると、Docker DesktopではMacからLinuxコンテナへ通信をルーティングできません。代わりにポートを公開してください。
OrbStackでは違いますか?
はい。OrbStackのドキュメントによると、MacからIPアドレスや.orb.localの名前でコンテナに接続できます。
出典
- Docker Docs:Explore networking how-tos on Docker Desktop
- Docker Docs:Networking on Docker Desktop
- OrbStack Docs:Container networking
- lsof(8)、macOS 27.2に付属のmanページ
出典は2026年10月29日に確認しました。manページはmacOSに付属のものです。「ターミナル」でman <name>を実行すると開けます。