首页 > 解决方案 > docker容器无法在vm上连接到互联网

问题描述

在我的三台服务器之一(centos7)上,docker 容器显示出一种奇怪的行为。下载映像后,docker 容器无法从 Internet 下载包。有错误的服务器与其他服务器之间的唯一区别是有错误的服务器设置为虚拟机,而其他服务器是专用的。

我首先尝试运行 docker compose 教程(https://docs.docker.com/compose/gettingstarted/),但是在创建服务时,容器无法获取网站来下载包。

RUN apk add --no-cache gcc musl-dev linux-headers
 ---> Running in c2bbe974f34b
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz

在这一步,过程卡住了,我取消了这个过程。为了测试网络连接,我接下来使用了busyboxes。首先,我在每台服务器上 ping 了 google,这在所有三个服务器上都有效。

sudo docker run --rm -i  busybox ping www.google.de

PING www.google.de (216.58.213.227): 56 data bytes
64 bytes from 216.58.213.227: seq=0 ttl=115 time=7.437 ms
64 bytes from 216.58.213.227: seq=1 ttl=115 time=7.275 ms
64 bytes from 216.58.213.227: seq=2 ttl=115 time=7.315 ms

另一方面,nslookup 在存在连接问题的服务器上不起作用。在其他服务器上,它按预期工作。

sudo docker run --rm -i  busybox nslookup www.google.de

Server:         172.17.0.7
Address:        172.17.0.7:53

Non-authoritative answer:
Name:   www.google.de
Address: 216.58.213.227

*** Can't find www.google.de: No answer

我已经读过其他帖子,我应该检查容器和主机上 /etc/resolv.conf 文件中的差异,但事实并非如此。另一个建议是重置 docker 网络以再次初始化它们,结果相同。我检查了 Docker 日志,但找不到任何看起来像错误或警告的内容。这不可能是防火墙问题,因为我停用了防火墙。如果我使用 --network host 运行容器,一切都会按预期工作......

有没有人建议我接下来可以做什么来理解这个问题?我真的很感激它:)

标签: dockerconnectionvirtual-machinecentos7

解决方案


推荐阅读