Разработчикам

Не удаётся подключиться к контейнеру Docker с Mac

Docker на Mac запускает контейнеры в виртуальной машине Linux. Чтобы подключиться к контейнеру из macOS, обычно публикуют порт на localhost.

Относится к: Docker Desktop и OrbStack в актуальных версиях macOS.Проверено: 29 октября 2026 г.

Симптомы

  • curl localhost:8080 не проходит, хотя внутри контейнера сервис работает.
  • Не удаётся пинговать IP-адрес контейнера или подключиться к нему.
  • На Mac нет интерфейса docker0.
  • Сервис работает на Linux, но не на Mac.

Вероятные причины

  • Порт не опубликован. Без -p Docker Desktop не пробрасывает порт на Mac.
  • IP контейнеров в Docker Desktop. В документации Docker Desktop сказано, что его сеть bridge недоступна с хоста.
  • Сервис в контейнере слушает 127.0.0.1. Тогда подключиться к нему может только сам контейнер.
  • Неправильная пара портов. В -p 8080:80 8080 — порт на Mac, а 80 — порт контейнера.

Как проверить

  1. Покажите запущенные контейнеры и их опубликованные порты.

    docker ps

    Вывод В столбце PORTS — пары вроде 0.0.0.0:8080->80/tcp. Если пары нет, порт не опубликован.

  2. Покажите опубликованные порты одного контейнера.

    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. Сделайте так, чтобы сервис в контейнере слушал 0.0.0.0, а не 127.0.0.1. Нужную настройку ищите в документации сервиса.

  4. Если порт на Mac занят, выберите другой. См. Порт уже занят на Mac.

  5. В OrbStack можно также использовать IP-адрес контейнера или его имя container-name.orb.local.

С Kilobat

  1. Проверки Kilobat выполняются на Mac. Используйте --context container, когда сбойный код работает в контейнере. Тогда отчёт заканчивается командой, которую нужно запустить там.

    kilobat why http://localhost:8080 --context container

Вопросы

Почему не удаётся пинговать контейнер в Docker Desktop?

В документации Docker сказано, что Docker Desktop не может маршрутизировать трафик с Mac к контейнерам Linux. Вместо этого опубликуйте порт.

А OrbStack работает иначе?

Да. В документации OrbStack сказано, что с Mac можно подключаться к контейнерам по IP-адресу и по именам .orb.local.

Источники

Источники проверены 29 октября 2026 г. Man-страницы — те, что установлены вместе с macOS; откройте любую командой man <name> в Терминале.