개발자

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 문서에 따르면 호스트에서는 브리지 네트워크에 접근할 수 없습니다.
  • 컨테이너의 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. 컨테이너의 서비스가 127.0.0.1 대신 0.0.0.0에서 수신 대기하도록 하세요. 설정은 해당 서비스의 문서를 참조하세요.

  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 이름으로 컨테이너에 연결할 수 있습니다.

출처

2026년 10월 29일 확인했습니다.