---
title: "MacからDockerコンテナに接続できない：ポートとIP · Kilobatガイド"
url: "https://kilobat.app/ja/guides/docker-container-from-mac.html"
description: "macOSからDocker DesktopやOrbStackのサービスに接続する：ポートを公開し、localhostを使い、コンテナのIPアドレスが使える場合を把握します。"
---

開発者向け

# MacからDockerコンテナに接続できない

Mac上のDockerは、Linux仮想マシンの中でコンテナを実行します。macOSからコンテナに接続するには、ふつうはポートをlocalhostに公開します。

対象：現在のmacOSバージョンのDocker DesktopとOrbStack。 · 確認日：2026年10月29日

## 症状

- `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がコンテナのポートです。

## 確認方法

1. 実行中のコンテナと、その公開ポートを一覧表示します。

   ```
   docker ps
   ```

   出力PORTS列に`0.0.0.0:8080->80/tcp`のような組み合わせが表示されます。組み合わせがなければ、ポートは公開されていません。
2. 1つのコンテナの公開ポートを表示します。

   ```
   docker port my-container
   ```
3. イメージにwgetが含まれていれば、コンテナの中からサービスをテストします。応答があれば、サービスは動いています。

   ```
   docker exec my-container wget -qO- http://localhost:80
   ```
4. Mac上でそのポートを待ち受けているプロセスを確認します。

   ```
   lsof -nP -iTCP:8080 -sTCP:LISTEN
   ```

## 解決方法

1. ポートを公開してコンテナを起動します。最初の数字がMac側のポートです。

   ```
   docker run -d -p 8080:80 nginx
   ```
2. Macから、localhostとMac側のポートで接続します。

   ```
   curl http://localhost:8080
   ```
3. コンテナ内のサービスが127.0.0.1ではなく0.0.0.0で待ち受けるようにします。設定方法はそのサービスのドキュメントを参照してください。
4. Mac側のポートが使用中なら、別のポートを選びます。[Macでポートが使用中](https://kilobat.app/ja/guides/port-already-in-use.html)を参照してください。
5. OrbStackでは、コンテナのIPアドレスや`container-name.orb.local`の名前も使えます。

## Kilobatを使う場合

1. 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](https://docs.docker.com/desktop/features/networking/networking-how-tos/)
- [Docker Docs：Networking on Docker Desktop](https://docs.docker.com/desktop/features/networking/)
- [OrbStack Docs：Container networking](https://docs.orbstack.dev/docker/network)
- lsof(8)、macOS 27.2に付属のmanページ

出典は2026年10月29日に確認しました。manページはmacOSに付属のものです。「ターミナル」で`man <name>`を実行すると開けます。

## 関連ガイド

- [コンテナからMacのlocalhostに接続できない](https://kilobat.app/ja/guides/localhost-from-container.html): コンテナはそれぞれ独自のネットワークスタックを持っています。
- [Macでポートが使用中](https://kilobat.app/ja/guides/port-already-in-use.html): 1つのTCPポートとアドレスで待ち受けられるプロセスは1つだけです。
- [1つのサイトやAPIに接続できない原因を見つける](https://kilobat.app/ja/guides/recipes/why-cant-it-connect.html): インターネットは使えるのに1つのアドレスだけ失敗するとき、Kilobatは各レイヤーを順番に確認します。
- [Macでポート5000や7000が使用中になる：AirPlayレシーバー](https://kilobat.app/ja/guides/airplay-receiver-port-5000.html): AppleはTCPポート5000と7000をAirPlay用として挙げています。
