Firewalld는 Docker의 기본 네트워크 인터페이스에 대한 DNS 요청을 차단하여 컨테이너가 실행될 때 도메인 이름을 확인할 수 없습니다.

1879 단어 Misc
호스트 환경:
[root@appsrv ~]# cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)
[root@appsrv ~]# docker --version
Docker version 19.03.8, build afacb8b
[root@appsrv ~]# firewall-cmd --version
0.7.0

[root@appsrv ~]# yum info docker-ce
 :0:00:36  ,  2020 04 28    17 06 01 。
 
          : docker-ce
          : 3
          : 19.03.8
          : 3.el7
          : x86_64
          : 104 M
            : docker-ce-19.03.8-3.el7.src.rpm
          : @System
      : docker-ce-stable

[root@appsrv ~]# yum info firewalld
CentOS-8 - AppStream                                                                                                  1.4 kB/s | 4.3 kB     00:03
CentOS-8 - Base                                                                                                       7.1 kB/s | 3.9 kB     00:00
CentOS-8 - Extras                                                                                                     2.8 kB/s | 1.5 kB     00:00
Docker CE Stable - x86_64                                                                                             557  B/s | 3.5 kB     00:06
 
          : firewalld
          : 0.7.0
          : 5.el8_1.1
          : noarch
          : 1.9 M
            : firewalld-0.7.0-5.el8_1.1.src.rpm
          : @System
      : BaseOS

기본container는 --net=bridge 모드를 사용하여 가상 네트워크에 연결하면 호스트의 가상 네트워크 인터페이스docker0(기본 IP:172.0.1)에서 외부 네트워크에 접근할 수 있습니다.
결과는container에서/etc/resolv.conf에서 설정한 DNS는 문제없고 DNS의 IP 주소도 핑할 수 있지만 임의의 도메인 이름도 핑할 수 없습니다.
프롬프트 오류: Name or service not known.
다른 네트워크 애플리케이션에서도 No route to host bad address Could not resolve host 등의 메시지가 표시될 수 있습니다.
네트워크 인터페이스 docker0을trusted zone에 추가하여 DNS 문제 해결
[root@appsrv ~]# firewall-cmd --permanent --zone=trusted --add-interface=docker0
success
[root@appsrv ~]# firewall-cmd --reload
success

좋은 웹페이지 즐겨찾기