我无法让 Docker 容器访问互联网?

Posted

技术标签:

【中文标题】我无法让 Docker 容器访问互联网?【英文标题】:I can't get Docker containers to access the internet? 【发布时间】:2014-07-11 17:28:37 【问题描述】:

我对此束手无策,我已经梳理了每一个谷歌结果,但没有任何帮助。

我完全无法让 docker 容器访问互联网。 IP 转发已启用 (net.ipv4.ip_forward = 1),ufw 已关闭,我尝试添加 -dns 8.8.8.8 -dns 8.8.4.4 标志。我在谷歌上找到的所有可能的解决方案都失败了。

有人知道如何提供帮助吗?

按照here 的建议尝试重置所有内容,并告诉我docker -d 没有运行,即使它在运行,也会导致整个事情中断。

【问题讨论】:

【参考方案1】:

我也遇到了同样的问题。因此,为了解决这个问题,我使用参数 --net=host 启动了容器,它对我来说非常有效。

这里是完整的声明

sudo docker start --net=host -it --name ex_ngninx ubuntu

【讨论】:

这使它暂时工作但我仍然无法docker buildsudo systemctl restart docker 修复了它 这是一种可疑的“修复”。这充其量是一种解决方法。 我在谷歌上搜索了一段时间,--net=host救了我 --net host on Docker for Mac 允许容器访问互联网,但 disables host access to the containers。定义 network in docker-compose 对我有用。 --net 不是 docker build 选项,但 --network 似乎是它的有效别名【参考方案2】:

已解决。我关注了these instructions:在NetworkManager.conf 中注释掉了dns=dnsmasq

【讨论】:

这个答案更好,因为它还修复了docker build 请注意,在 Ubuntu 16+ 中,重启网络管理器的命令现在是 sudo systemctl restart network-manager,因为它使用的是 systemd 而不是 upstart 尝试了所有技巧,但始终显示“0% [连接到 120.0.0.1 (120.0.0.1)] [连接到 120.0.0.1 (120.0.0.1)]”。知道如何解决这个问题吗?我的容器在 Ubuntu 中运行。

以上是关于我无法让 Docker 容器访问互联网?的主要内容,如果未能解决你的问题,请参考以下文章

7.Docker技术入门与实战 --- 端口映射与容器互联

使用docker容器时 不能访问互联网

aws-vpc 容器无法访问互联网

docker互联机制实现便捷互访

没有 --net=host 参数的 docker 容器内的网络无法访问

Docker网络基础配置