>  기사  >  운영 및 유지보수  >  Docker 컨테이너가 인터넷에 액세스할 수 없는 이유와 해결 방법을 공유하세요.

Docker 컨테이너가 인터넷에 액세스할 수 없는 이유와 해결 방법을 공유하세요.

PHPz
PHPz원래의
2023-04-10 14:18:455106검색

최근 몇 년 동안 Docker가 널리 사용됨에 따라 Docker를 사용할 때 때때로 오늘 논의할 문제와 같은 몇 가지 문제에 직면할 수 있습니다. Docker 컨테이너는 인터넷에 액세스할 수 없습니다. 이 문제는 Docker를 사용할 때 매우 흔히 발생하지만 매우 짜증나고 골치 아픈 문제이기도 합니다. 오늘은 Docker 컨테이너가 인터넷과 해당 솔루션에 액세스할 수 없는 몇 가지 이유를 공유하겠습니다.

1. 컨테이너의 네트워크 설정을 확인합니다

먼저, 컨테이너의 네트워크 설정을 확인하여 네트워크 설정이 올바른지 확인해야 합니다. Docker를 사용하여 컨테이너를 생성할 때 컨테이너의 네트워크 유형과 네트워크 구성을 설정할 수 있습니다. 네트워크 유형이 "없음"으로 구성되면 컨테이너는 인터넷에 액세스할 수 없습니다. 그리고 네트워크 유형을 "브리지"로 설정하면 컨테이너는 호스트의 네트워크를 통해 인터넷에 접속할 수 있다.

다음 명령을 사용하여 컨테이너의 네트워크 설정을 볼 수 있습니다.

docker inspect <容器名或 ID> | grep NetworkMode

출력 결과가 "none"이면 다음 명령을 사용하여 컨테이너 네트워크 유형을 "bridge"로 설정해야 합니다.

docker run --net=bridge <镜像名>

컨테이너가 호스트를 통과할 수 있도록 호스트 네트워크가 온라인 상태입니다.

2. 컨테이너의 DNS 구성을 확인하세요.

다른 컨테이너가 인터넷에 접속할 수 없는 이유는 DNS 구성이 잘못되었기 때문입니다. 컨테이너 내부나 호스트에서 명령을 실행할 때 DNS를 사용하여 도메인 이름을 확인해야 합니다. DNS 구성이 잘못된 경우 컨테이너는 도메인 이름을 확인할 수 없으며 인터넷에 액세스할 수 없습니다.

다음 명령을 사용하여 컨테이너의 DNS 구성을 확인할 수 있습니다.

docker inspect <容器名或 ID> | grep -i dns

출력 결과가 비어 있으면 DNS 구성을 수동으로 설정해야 합니다. 컨테이너를 생성할 때 다음 명령을 사용하여 DNS 구성을 수동으로 설정할 수 있습니다.

docker run --dns=<DNS 服务器> <镜像名>

위 명령에서는 DNS 서버를 8.8.8.8과 같은 자체 DNS 서버 주소로 구성할 수 있습니다.

3. 컨테이너의 방화벽 설정을 확인하세요

컨테이너가 인터넷에 접속할 수 없는 이유도 컨테이너의 방화벽 설정과 관련이 있는 경우가 있습니다. 컨테이너의 방화벽은 기본적으로 활성화되어 있으며 모든 인바운드 및 아웃바운드 트래픽을 차단합니다.

다음 명령을 사용하여 컨테이너의 방화벽 설정을 확인할 수 있습니다.

docker exec <容器名或 ID> iptables -L

방화벽이 활성화된 경우 다음 명령을 사용하여 방화벽을 끌 수 있습니다.

docker exec <容器名或 ID> iptables -P INPUT ACCEPT
docker exec <容器名或 ID> iptables -P FORWARD ACCEPT
docker exec <容器名或 ID> iptables -P OUTPUT ACCEPT
docker exec <容器名或 ID> iptables -F

위 명령은 컨테이너의 기본 정책을 설정한다는 의미입니다. 컨테이너의 방화벽을 수락한 다음 모든 방화벽 규칙을 지웁니다.

4. 호스트 컴퓨터의 방화벽 설정을 확인하세요

위의 세 가지 해결 방법으로 문제가 해결되지 않으면 호스트 컴퓨터의 방화벽 설정을 확인해야 합니다. 호스트의 방화벽이 올바르게 구성되지 않으면 컨테이너의 트래픽이 차단되어 컨테이너가 인터넷에 액세스하지 못할 수 있습니다.

다음 명령을 사용하여 호스트의 방화벽 설정을 확인할 수 있습니다.

iptables -L

방화벽이 활성화된 경우 다음 명령을 사용하여 호스트의 방화벽을 열 수 있습니다.

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F

위 명령은 기본 정책을 설정한다는 의미입니다. 호스트의 방화벽 수락으로 설정한 다음 모든 방화벽 규칙을 지웁니다.

요약

즉, Docker 컨테이너가 인터넷에 액세스할 수 없는 문제가 발생하면 먼저 컨테이너의 네트워크 설정, DNS 구성 및 방화벽 설정을 확인해야 합니다. 이것이 정상이라면 호스트의 방화벽 설정을 확인해야 합니다. 오늘의 글이 Docker를 사용하면서 문제를 겪는 모든 분들께 도움이 되기를 바랍니다.

위 내용은 Docker 컨테이너가 인터넷에 액세스할 수 없는 이유와 해결 방법을 공유하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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