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