>  기사  >  운영 및 유지보수  >  Docker가 호스트 DNS와 통신할 수 없는 문제를 해결하는 방법

Docker가 호스트 DNS와 통신할 수 없는 문제를 해결하는 방법

PHPz
PHPz원래의
2023-04-17 15:29:491522검색

Docker가 호스트 DNS와 작동하지 않는 솔루션

Docker는 이식 가능하고 확장 가능한 컨테이너화 환경을 제공하는 널리 사용되는 애플리케이션 컨테이너화 플랫폼입니다. 그러나 Docker를 호스트 DNS와 함께 사용할 때 도메인 이름을 확인할 수 없거나 대기 시간이 길어지는 등 다양한 문제가 발생하는 경우가 있습니다. 이 기사에서는 Docker를 호스트 DNS와 함께 사용할 수 없는 이유와 솔루션을 소개합니다.

Reason

Docker는 Cgroup 및 Namespace와 같은 기술을 사용하여 컨테이너의 호스트와 완전히 격리된 환경을 제공합니다. 이 격리 환경은 컨테이너를 보호하지만 컨테이너가 호스트의 DNS 서버를 통해 통신하는 것을 방지합니다. 따라서 컨테이너 내부의 도메인 이름 확인에 호스트 DNS 서비스를 사용할 수 없습니다.

해결 방법

Docker를 호스트 DNS와 함께 사용할 수 없는 문제를 해결하려면 다음 조치를 취할 수 있습니다.

1. Docker 컨테이너에 사용자 지정 DNS 서버를 설정합니다

사용자 지정 DNS 서버를 설정할 수 있습니다. Docker에서 기본 DNS 서버를 대체합니다. Dockerfile에서 다음 명령을 사용하여 맞춤 DNS 서버를 설정할 수 있습니다.

RUN echo "nameserver 8.8.8.8" >> /etc/resolv.conf

그러면 Google의 공개 DNS 서버 8.8.8.8이 컨테이너의 /etc/resolv.conf 파일에 추가됩니다. 여러 개의 네임서버를 추가하여 여러 개의 DNS 서버를 설정할 수 있습니다.

2. 호스트에 Docker의 DNS 서버 설정

컨테이너가 호스트를 통해 도메인 이름 확인을 수행할 수 있도록 호스트에 Docker의 DNS 서버를 설정할 수 있습니다. /etc/docker/daemon.json 파일에 다음 구성을 추가하여 Docker DNS 서버를 설정할 수 있습니다.

{
  "dns": ["8.8.8.8", "8.8.4.4"]
}

그러면 Google의 공개 DNS 서버 8.8.8.8 및 8.8.4.4가 Docker DNS 서버에 추가됩니다. 여러 개의 DNS 서버를 추가하여 여러 개의 DNS 서버를 설정할 수 있습니다.

3. Docker 컨테이너의 --dns 옵션을 사용하세요.

Docker 컨테이너를 시작할 때 --dns 옵션을 사용하여 컨테이너의 DNS 서버를 설정할 수 있습니다. 예:

docker run --dns 8.8.8.8 -it ubuntu:latest

이렇게 하면 Google의 공개 DNS 서버 8.8.8.8이 컨테이너의 DNS 서버로 설정됩니다.

요약

Docker는 컨테이너에 격리된 환경을 제공하기 위해 일부 기술을 사용하므로 호스트 DNS와 함께 사용할 수 없습니다. 이 문제를 해결하려면 Docker 컨테이너에 사용자 지정 DNS 서버를 설정하거나, 호스트에 Docker의 DNS 서버를 설정하거나, Docker 컨테이너의 --dns 옵션을 사용하여 컨테이너의 DNS 서버를 설정할 수 있습니다. 이러한 솔루션을 통해 Docker는 호스트 DNS와 함께 작동할 수 있으므로 Docker 컨테이너화 플랫폼을 더 잘 사용할 수 있습니다.

위 내용은 Docker가 호스트 DNS와 통신할 수 없는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.