Docker Desktop 네트워킹 how-to

Docker Desktop 네트워킹 how-to

이 페이지는 네트워킹 기능을 설정하고 사용하는 방법, 컨테이너를 호스트 서비스에 연결하는 방법, 프록시나 VPN 뒤에서 작업하는 방법, 그리고 흔한 문제를 해결하는 방법을 설명해요.

출처: Docker Desktop networking how-tos

본문

Docker Desktop이 컨테이너, VM, 호스트 사이에서 네트워크 트래픽과 파일 I/O를 어떻게 라우팅하는지에 대한 자세한 내용은 네트워크 개요를 참고하세요.

컨테이너를 호스트의 서비스에 연결하기

호스트는 IP 주소가 계속 바뀌거나, 네트워크가 없으면 아예 없을 수도 있어요. 호스트에서 실행 중인 서비스에 연결하려면 특별한 DNS 이름을 사용해요.

이름 설명
host.docker.internal 호스트의 내부 IP 주소로 해석됨
gateway.docker.internal Docker VM의 게이트웨이 IP로 해석됨

예시: 포트 8000에서 간단한 HTTP 서버를 실행해요.

$ python -m http.server 8000

그다음 컨테이너를 실행하고 curl을 설치해서 다음 명령으로 호스트에 연결을 시도해요.

$ docker run --rm -it alpine sh
# apk add curl
# curl http://host.docker.internal:8000
# exit

호스트에서 컨테이너로 연결하기

호스트나 로컬 네트워크에서 컨테이너화된 서비스에 접근하려면 -p--publish 플래그로 포트를 게시해요.

$ docker run -d -p 80:80 --name webserver nginx

Docker Desktop은 컨테이너 안 포트 80에서 실행 중인 것(여기선 nginx)을 localhost의 포트 80에서 사용할 수 있게 해줘요.

: -p의 문법은 HOST_PORT:CLIENT_PORT예요.

모든 포트를 게시하려면 -P 플래그를 써요. 다음 명령은 컨테이너를 detached 모드로 시작하고 -P가 컨테이너의 모든 노출된 포트를 호스트의 임의 포트로 게시해요.

$ docker run -d -P --name webserver nginx

대안으로 호스트 네트워킹을 사용해 컨테이너에 호스트의 네트워크 스택을 직접 접근하게 할 수도 있어요. docker run과 함께 쓰는 publish 옵션의 자세한 내용은 run 명령 문서를 보세요.

모든 인바운드 연결은 Docker Desktop 백엔드 프로세스(com.docker.backend(Mac), com.docker.backend.exe(Windows), qemu(Linux))를 통과하며, 이 프로세스가 VM으로의 포트 포워딩을 처리해요.

VPN과 함께 작업하기

Docker Desktop 네트워킹은 VPN에 연결된 상태에서도 동작할 수 있어요. 이를 위해 Docker Desktop은 컨테이너의 트래픽을 가로채서, Docker 애플리케이션에서 시작된 것처럼 호스트에 주입해요. 이 트래픽이 호스트 방화벽과 엔드포인트 탐지 시스템에 어떻게 보이는지는 방화벽과 엔드포인트 가시성 문서를 참고하세요.

프록시와 함께 작업하기

Docker Desktop은 시스템 프록시나 수동 구성을 사용할 수 있어요. 프록시를 설정하려면:

  1. Settings의 Resources 탭으로 이동해요.
  2. 드롭다운에서 Proxies 를 선택해요.
  3. Manual proxy configuration 토글을 켜요.
  4. HTTP, HTTPS 또는 SOCKS5 프록시 URL을 입력해요.

프록시와 프록시 설정에 대한 자세한 내용은 프록시 설정 문서를 참고하세요.

Mac과 Windows를 위한 네트워크 how-to

IPv4 전용부터 듀얼 스택, IPv6 전용 시스템까지 다양한 환경을 지원하도록 Docker가 컨테이너 네트워킹과 DNS 해석을 처리하는 방식을 제어할 수 있어요. 이 설정은 호환되지 않거나 잘못 구성된 호스트 네트워크로 인한 타임아웃과 연결 문제를 예방하는 데 도움이 돼요.

이 설정들은 Docker Desktop Dashboard 설정의 Network 탭에서, 관리자라면 Settings Management를 통한 admin-settings.json 파일이나 Docker Home에서 설정할 수 있어요.

참고: 이 설정은 CLI 플래그나 Compose 파일 옵션으로 네트워크별로 덮어쓸 수 있어요.

기본 네트워킹 모드: Docker가 새 네트워크를 만들 때 사용하는 기본 IP 프로토콜을 선택해요.

모드 설명
Dual IPv4/IPv6 (기본) IPv4와 IPv6를 모두 지원. 가장 유연함
IPv4만 IPv4 주소만 사용
IPv6만 IPv6 주소만 사용

DNS 해석 동작: 컨테이너에 반환되는 DNS 레코드를 Docker가 필터링하는 방식을 제어해요.

옵션 설명
Auto (권장) 지원되지 않는 레코드 타입을 자동으로 필터링 (IPv4는 A, IPv6는 AAAA)
IPv4 필터링 (A 레코드) IPv4 조회 차단. 듀얼 스택 모드에서만 사용 가능
IPv6 필터링 (AAAA 레코드) IPv6 조회 차단. 듀얼 스택 모드에서만 사용 가능
필터링 없음 A와 AAAA 레코드를 모두 반환

중요: 기본 네트워킹 모드를 바꾸면 DNS 필터가 Auto로 리셋돼요.

더 알아보기