Docker는 호스트 이름을 사용하여 로컬 네트워크의 다른 호스트와 어떻게 통신할 수 있습니까?

Docker는 호스트 이름을 사용하여 로컬 네트워크의 다른 호스트와 어떻게 통신할 수 있습니까?

동일한 네트워크에 아래 호스트 이름과 IP 주소(동적 IP)를 가진 두 대의 컴퓨터가 있습니다.

host1.local - 10.0.0.11
host2.local - 10.0.0.12

host1기본 구성으로 Docker를 실행 중입니다.

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

관련 정보