Docker 컨테이너에서 호스트 포트에 접속하기

2020년 7월 7일 수정

≡ 목차 (Table of Contents)

이 글은 macOS에서 Docker를 사용할 때 호스트 포트에 접속되지 않는 현상을 다룬다.

참고로 리눅스라면 네트워크 모드를 host 로만 해도 해결될 수도 있다.

host.docker.internal

네트워크 구현 문제로 호스트에 열려있는 포트들,특히 도커에 의해 열리지 않은 포트들에 접근하려면 host.docker.internal 라는 특수한 이름으로 접속할 수 있다.

예를 들어 내 컴퓨터에 MongoDB를 27017 포트로 열어놓은 상태에서, 리눅스 도커 컨테이너에서 이 MongoDB에 접속하려면 아래와 같은 식의 커맨드를 사용할 수 있다.

mongo mongodb://host.docker.internal:27017/dbname

이 이름은 Docker 컨테이너 내부에서 전역으로 생기는 호스트 이름의 별칭이기 때문에 설정이나 스크립트 등등 컨테이너 내부라면 가리지 않고 쓸 수 있다.

외부 링크