docker - 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 运行容器,一切都会按预期工作......
有没有人建议我接下来可以做什么来理解这个问题?我真的很感激它:)
解决方案
推荐阅读
- angular - 打字稿中的 Angular 6 和 i18n
- jenkins - 如何在不推送新提交的情况下重新启动 GitHub 检查?
- html - 如果复选框的标签是超链接,是否违反 WCAG 2.0 AA?
- reactjs - 'this' 隐含类型为 'any',因为它没有类型注释。在函数上调用绑定时
- swift - Swift 4只旋转一屏UITabBarController
- javascript - 反应 onChange 不从 Div 触发
- c# - Html.EditorFor Post 后不更新
- python - 在 python 中绘制每小时时间序列
- javascript - 如何从 cognito 异步函数返回响应并将其显示在页面上?
- dart - Flutter 自定义动画对话框