Mac에서 docker host 네트워크 이용 방법

MacOS에서 docker를 실행할 때 host 네트워크와 연결하여 실행하고 싶은 경우가 있습니다. 예를들면 다음과 같은 상황인데요.

  • 데이터베이스가 호스트(MacOS)에 설치됨
  • 도커 컨테이너에서 호스트 데이터베이스로 접속

이런 경우 도커 컨테이너는 자체 네트워크를 구성하기 때문에 일반적으로 localhost라는 host 주소로 연결을 하게 되면 연결이 실패합니다. 리눅스의 경우 docker 실행 시 —network=”host” 옵션을 주어 docker를 실행하면 host 네트워크와 연동되어 컨테이너가 실행되는데 MacOS 환경은 차이가 있는가 봅니다.

이 경우 옵션으로 우회하는 방법은 찾질 못 했는데요. 서비스에서 데이터베이스 연결 host를 다음과같이 사용하면 연결 가능한 것을 확인했습니다.

host.docker.internal

예를들면, 이런 구조입니다.

postgresql://user:pass@host.docker.internal:port/dbname

이런 형태로 host주소를 localhost가 아니라 host.docker.internal로 사용하면 동작합니다.

Leave a Reply