Docker는 로컬 네트워크의 다른 호스트와 통신하기 위해 호스트 이름을 어떻게 사용합니까?

Docker는 로컬 네트워크의 다른 호스트와 통신하기 위해 호스트 이름을 어떻게 사용합니까?

동일한 네트워크에 두 대의 컴퓨터가 있으며 호스트 이름과 IP 주소(동적 IP)는 다음과 같습니다.

host1.local - 10.0.0.11
host2.local - 10.0.0.12

host1Docker가 기본 구성으로 실행 중입니다.

의 컨테이너는 IP 주소를 사용하여 연결할 host1수 있지만 호스트 이름 은 사용할 수 없습니다 . 누구든지 컨테이너가 사용된 호스트 이름에 직접 연결할 수 있는 방법을 말해 줄 수 있습니까? 두 서버 모두 DHCP 서버에 있고 고정 IP 주소가 없으므로 구성 파일이host210.0.0.12host2host2.localhosts2host1, 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 서버에서 이를 사용할 수 있어야 합니다.

관련 정보