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 중국어 웹사이트의 기타 관련 기사를 참조하세요!