[Linux/Docker] Docker Image (컨테이너) 인터넷 접속 문제

실험 환경

  • OS: Centos 8
  • Docker Engine (Client): 20.10.2
  • Docker Engine (Server): 19.03.14

Docker Image (컨테이너) 인터넷 접속 여부 확인

Docker 설치 이후 Ubuntu:16.04 Image를 실행하였다. 그리고 “apt-get”을 사용해서 필요한 프로그램을 설치하려고 하는데 에러 메시지가 나오면서 아무것도 설치하지 못하였다. 그래서 컨테이너에서 인터넷이 되는지 확인하는 작업을 진행하였다. 아래 명령어를 사용하면 컨테이너 안에서 인터넷 접속 여부를 확인 할 수 있다.

#Step 1: Check Internet
$docker run busybox nslookup google.com

위 명령어를 실행해서 아래와 같은 메시지가 나오면 인터넷 연결에 문제가 있다는 의미이다.

  • connection timed out; no servers could be reached

인터넷에 검색을 해보니 컨테이너와 Host 간에 특정 문제(?)가 발생해서 인터넷 연결이 안 된다고 한다 (정확한 이유는 출처 2를 확인하면 됩니다). 해결 방법은 아래 2가지 방법이 있습니다. 저의 경우 2번째 방법을 사용해서 인터넷 접속 문제를 해결했습니다.

#Method 1 (아래 파일에서 FirewallBackend=iptables 로 수정함)
$sudo vi etc/firewalld/firewalld.conf

#Method 2
$firewall-cmd --permanent --zone=trusted --add-interface=docker0
$firewall-cmd --reload

첫 번째 방법은 firewalld.conf 파일에서 “FirewallBackend=nftables”에서 “FirewallBackend=iptables”로 수정을 하면 된다. 저의 경우 해당 폴더에 firewalld.conf 파일이 없어서 다른 방법을 사용하였다. 두 번째 방법은 위에 있는 명령어를 2개 실행하면 된다.

다시 인터넷이 되는지 확인하기 위해서 페이지 제일 앞에 있는 명령어를 실행한다. 저의 경우 google.com 주소가 나오면서 정상적으로 인터넷이 되는 것을 확인할 수 있었다.


출처

  1. https://ggami.net/648/docker-centos8-fedora%EC%97%90%EC%84%9C-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-host-%EC%82%AC%EC%9A%A9-%EB%B6%88%EA%B0%80%EB%8A%A5%ED%95%9C-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0%EB%B0%A9%EB%B2%95/
  2. https://ahelpme.com/linux/centos-8/firewalld-and-podman-or-docker-no-internet-in-the-container-and-could-not-resolve-host/

Leave a Comment