所以我的docker安装有一个相当奇怪的问题:
如果我跑
apt-get update
内部例如一个debian容器(docker run -it --rm debian
)它总是失败,错误如
Err:1 http://security.ubuntu.com/ubuntu xenial-security InRelease
Temporary failure resolving 'security.ubuntu.com'
现在这似乎是一个DNS问题,正如许多其他类似帖子中所讨论的那样,但是我在这个问题上引起了反思:当我尝试ping主机时
ping security.ubuntu.com
它完美无缺。域名得到解决,ping工作正常。 e.g。
$ docker run -it —rm debian
root@0b6a6ec41a37:/# ping google.com
PING google.com (172.217.19.174): 56 data bytes
64 bytes from 172.217.19.174: icmp_seq=0 ttl=55 time=0.943 ms
然后我在busybox容器(nslookup
)中尝试了docker run -it --rm busybox
,这也很好。
我开始调查这个因为我想用docker设置nextcloud并且管理界面报告服务器无法验证有效的互联网连接,因为它无法解决,例如github.com。
当我连接到正在运行的nextcloud容器并在那里的命令行上进行测试时,下一个惊人的位置出现了。 ping
再次正常工作,这次即使apt-get update
也有效!
我已经在ufw启用和禁用的情况下完成了这些测试。结果相同。
我现在对发生的事情感到很困惑。在我的服务器或我周围的网络上,有些东西一定是错的,但我无法弄清楚问题是什么。
如果某人已经有这样的问题,那么听听您的采取/解决方案会很棒。谢谢:))
环境:
主持人:Ubuntu 16.04.03-LTS
Docker:17.09.0-ce
我的daemon.json
:
{
"graph": "/mnt/nfs/nas/docker",
"iptables": true,
"dns": ["10.0.16.1"],
"userland-proxy": true,
"ip": "127.0.0.1"
}
//编辑02-10-2017
关于resolv.conf和DNS设置:是的,我尝试省略daemon.json中的“dns”字段,然后它只取主机resolv.conf中的值,我也尝试使用“8.8.8.8”结果相同。我的主机resolv.conf包含:
nameserver 10.0.16.1
答案 0 :(得分:0)
我似乎修好了它,但我不完全确定修复它的部分。 我做了以下事情:
经过大量试验和失败后,我决定从我的系统中彻底清除docker和所有相关文件夹(我还删除了剩余的桥并重置了我的iptables),只留下daemon.json
仅包含:
{
"graph": "/mnt/nfs/nas/docker"
}
然后我重新安装了docker。它没有创建/var/lib/docker
文件夹,因为我将NFS卷指定为图根。然后我再次尝试,但这次它甚至无法启动容器! docker info
给了我一个“警告”,我的nfs分享不支持“d_type”。然后我停止了docker,删除了daemon.json
并重新启动了。这当然创建了/var/lib/docker
,现在我可以启动容器,一切正常。
我想我对docker配置和网桥的清除修复了它,或者我之前将图形根移动到我的nfs卷上就打破了它。
所以一切都表现得应该如此但我仍然希望将我的音量放在我安装的NAS音量上。我可以切换到一个不同的FS驱动程序用于docker,也许它从一开始就可以工作。
答案 1 :(得分:0)
docker run -it --network host --rm debian
请注意添加的--network host
。