도커 기본 브릿지 네트워크에서 호스트 네임 접근이 안 되는 이유와 해결 방법

도커 컨테이너에서 기본 브릿지 네트워크(bridge 네트워크) 환경에서 호스트 네임으로 접근이 불가능한 이유는 다음과 같습니다.


🔹 1. 기본 브릿지 네트워크의 구조

도커에서 기본적으로 제공하는 bridge 네트워크는 컨테이너 간 통신을 지원하지만, DNS 기반의 호스트 네임 해결(name resolution)은 제공하지 않습니다.
즉, 컨테이너 내부에서 다른 컨테이너의 이름(hostname)으로 접근이 불가능합니다.

  • bridge 네트워크에서는 컨테이너가 서로의 IP 주소로만 접근 가능합니다.
  • 컨테이너 이름을 통한 접근은 **사용자 정의 브릿지 네트워크(custom bridge network)**에서만 가능합니다.

🔹 2. 기본 브릿지 네트워크에서 호스트 네임을 인식할 수 없는 이유

  • docker0 브릿지 네트워크는 단순히 컨테이너 간 NAT(Network Address Translation) 연결만 제공하며, DNS 서비스를 포함하지 않습니다.
  • 따라서, 컨테이너에서 다른 컨테이너의 이름을 알아낼 방법이 없어, 기본적으로 컨테이너 이름을 통한 접근이 불가능합니다.

✅ 해결 방법

기본 브릿지 네트워크 대신 사용자 정의 브릿지 네트워크를 사용하면, 컨테이너 간 호스트 네임 기반의 접근이 가능해집니다.

# 사용자 정의 브릿지 네트워크 생성
docker network create my_bridge

# 해당 네트워크에 컨테이너 실행 (이름 지정)
docker run -d --name my_container1 --network my_bridge nginx
docker run -d --name my_container2 --network my_bridge alpine sleep 1000

# 컨테이너 내부에서 my_container1으로 접속
docker exec -it my_container2 ping my_container1

이렇게 하면 my_container2에서 my_container1호스트 네임으로 접근할 수 있습니다.


🔹 3. 컨테이너에서 호스트(host.docker.internal) 접근 불가능한 경우

도커 컨테이너에서 호스트 머신에 접근하려고 할 때 host.docker.internal 도 인식되지 않는 경우가 있습니다.

✅ 해결 방법

  • Linux 환경에서는 기본적으로 host.docker.internal이 자동 설정되지 않음
  • --add-host 옵션을 사용하여 수동으로 호스트 IP를 추가
docker run -d --add-host=host.docker.internal:host-gateway my_container


✅ 정리

  • 기본 브릿지 네트워크(bridge)에서는 컨테이너 간 호스트 네임으로 접근이 불가능 (IP로만 가능)
  • 사용자 정의 브릿지 네트워크를 사용하면 DNS 해석을 지원하여 컨테이너 이름으로 접근 가능
  • host.docker.internal이 동작하지 않으면 --add-host 옵션으로 수동 설정 필요

이제 컨테이너 간 호스트 네임으로 접근하려면 사용자 정의 네트워크를 활용하면 됩니다! 🚀

Leave a Comment