동일한 네트워크에 아래 호스트 이름과 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 확인을 구성하는 추가 옵션이 있습니다(참조:여기):
기본적으로 컨테이너는 구성 파일에 정의된 대로 호스트의 DNS 설정을 상속합니다
/etc/resolv.conf
. 기본 브리지 네트워크를 사용하는 컨테이너는 이 파일의 복사본을 가져오는 반면, 사용자 지정 네트워크를 사용하는 컨테이너는 외부 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 서버에서 이를 사용할 수 있어야 합니다.