在我的Fedora 32机器中,DNS运行得更好。 ping google.com时,DNS查找正常。
PING google.com (172.217.160.174) 56(84) bytes of data.
64 bytes from bom05s12-in-f14.1e100.net (172.217.160.174): icmp_seq=1 ttl=117 time=41.5 ms
64 bytes from bom05s12-in-f14.1e100.net (172.217.160.174): icmp_seq=2 ttl=117 time=47.2 ms
我使用默认网桥网络构建了以下简单的docker镜像。 (我需要桥接网络。当我使用主机网络时,我的问题正在起作用。并且DockerImage将具有更多命令)
FROM tailor/docker-libvips:node-10.9
docker build --tag dinuka/video-file-service-test-sandbox:node-10.9 .
docker run -dit --name video-test-1 dinuka/video-file-service-test-sandbox:node-10.9
我已使用以下命令登录到容器。
docker attach video-test-1
之后,我尝试ping IP。这是成功。
/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=42.5 ms
但是它不能用于域
/# ping google.com
ping: google.com: Temporary failure in name resolution
容器DNS是正确的。它与我的计算机名称服务器相同。
/# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.1
我的机器操作系统是Fedora32。我禁用了selinux和firewalld。我已经在stackoverflow中尝试了许多解决方案。但是任何解决不了的问题。
答案 0 :(得分:0)
您需要手动向网络接口添加伪装:
ZONE=$(sudo firewall-cmd --get-zone-of-interface=<internet facing interface>)
sudo firewall-cmd --zone=$ZONE --add-masquerade --permanent success
sudo firewall-cmd --reload success
sudo systemctl restart docker