동일한 네트워크에 두 대의 컴퓨터가 있으며 호스트 이름과 IP 주소(동적 IP)는 다음과 같습니다.
host1.local - 10.0.0.11
host2.local - 10.0.0.12
host1
Docker가 기본 구성으로 실행 중입니다.
의 컨테이너는 IP 주소를 사용하여 연결할 host1
수 있지만 호스트 이름 은 사용할 수 없습니다 . 누구든지 컨테이너가 사용된 호스트 이름에 직접 연결할 수 있는 방법을 말해 줄 수 있습니까? 두 서버 모두 DHCP 서버에 있고 고정 IP 주소가 없으므로 구성 파일이host2
10.0.0.12
host2
host2.local
hosts2
host1, host2
/etc/호스트내 경우에는 작동하지 않습니다.
답변1
Docker 컨테이너는 일반적으로 다음 위치에 있습니다.기본 브리지 네트워크:
Docker가 시작되면 기본 브리지 네트워크(브리지라고도 함)가 자동으로 생성되며, 별도로 지정하지 않는 한 새로 시작된 컨테이너는 이 네트워크에 연결됩니다.
자체 DNS 서비스를 사용하여 사용자 정의 브리지를 가질 수도 있습니다.
사용자 정의 브리지는 컨테이너 간 자동 DNS 확인을 제공합니다.
사용자 정의 브리지 네트워크에서 컨테이너는 이름이나 별칭으로 서로를 확인할 수 있습니다.
컨테이너에서 DNS 확인을 구성하는 다른 옵션이 있습니다(참조:여기):
기본적으로 컨테이너는
/etc/resolv.conf
구성 파일에 정의된 호스트의 DNS 설정을 상속합니다. 기본 브리지 네트워크를 사용하는 컨테이너는 이 파일의 복사본을 가져오는 반면, 사용자 지정 네트워크를 사용하는 컨테이너는 외부 DNS 조회를 호스트에 구성된 DNS 서버로 전달하는 Docker의 내장형 DNS 서버를 사용합니다./etc/hosts에 정의된 사용자 정의 호스트는 상속되지 않습니다. 추가 호스트를 컨테이너에 전달하려면 docker run 참조 문서에서 "컨테이너 호스트 파일에 항목 추가"를 참조하세요. 컨테이너별로 이러한 설정을 재정의할 수 있습니다.
그리고컨테이너 호스트 파일에 항목 추가설명하다:
/etc/hosts
하나 이상의 플래그를 사용하여 컨테이너 파일에 추가 호스트를 추가할 수 있습니다--add-host
. 이 예에서는 docker라는 호스트에 대한 고정 주소를 추가합니다.$ docker run --add-host=docker:93.184.216.34 --rm -it alpine
물론 업스트림 DNS 서버를 구성하여 올바르게 확인할 수도 있습니다 *.local
. 이를 위해 mDNS를 사용하는 경우 업스트림 DNS 서버에서 이를 사용할 수 있어야 합니다.