在我现在的项目中,我们将Github Enterprise设置在VPN后面,所以我使用OpenVPN连接我的桌面(Ubuntu 14.04 LTS),但是当我尝试使用Docker(使用Centos6)构建时,我总是得到ssh: Could not resolve hostname github.xxx.xxx: Name or service not known
。
我查看了Docker文档,但看起来它只是使用Proxy或Bridge解决问题,Google只返回有关如何在Docker镜像上设置OpenVPN的答案。
然后我转向Stackoverflow并希望得到一个关于如何运行sudo docker build image
并让它使用我的VPN从Github克隆的答案。
此外,我们的Mac用户已经安装了Boot2Docker,并且在构建映像时没有任何问题。
答案 0 :(得分:5)
我尝试了各种各样的方法,最后最简单的Thins帮助了Ubuntu 18.04。停止和启动docker deamon。
先决条件:关闭VPN
sudo systemctl stop docker
---> Start VPN
sudo systemctl start docker
希望会帮助某人。
答案 1 :(得分:2)
这可能是两个问题之一:
1)DNS
2)桌面的路由表
我的具体案例(也是Ubuntu 14.04)原来是路由表。这就是我在下面的内容。
要考虑DNS是否有问题,您是否可以成功从容器内ping IP?
docker run -i -t ubuntu:14.04 /bin/bash
root@44445bfefc4e:/# 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=54 time=76.1 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=54 time=75.6 ms
如果这样做并且您在连接到VPN时仍然无法伸出容器,请查看您的路线。
断开VPN并使用route
检查您的路线。这是我的输出作为一个例子:
Destination Gateway Genmask Flags Metric Ref Use Iface
default DD-WRT 0.0.0.0 UG 0 0 0 wlan0
172.17.0.0 * 255.255.0.0 U 0 0 0 docker0
192.168.1.0 * 255.255.255.0 U 9 0 0 wlan0
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
在那里,你会看到Docker的网络(172.17.0.0
)。
现在,连接到您的VPN并重新发出命令。您的里程可能会有所不同,但我发现的是路线表中的重复条目:
172.17.0.0 * 255.255.0.0 U 0 0 0 vpn0
172.17.0.0 * 255.255.0.0 U 0 0 0 docker0
服务器正在推送一条重复的路线!
在我的情况下,我不需要这些路由来成功导航VPN,所以我找到了一种禁用它们的方法。我使用OpenVPN,所以我在对话框的设置中深入查看并选中了“忽略自动获取的路线”。
该图片来自this blog post。
一旦我检查并重新连接到VPN,我就不再有重复的条目,我的Docker容器能够连接到Internet和VPN内的主机。
答案 2 :(得分:2)
如果我对您的理解正确,那么您想在构建Docker映像期间通过VPN访问svn存储库,即Dockerfile的指令之一必须解析主机名。
如果您的问题与域名解析有关,则可以使用--add-host
的{{1}}选项(请参见doc)将IP明确映射到相关的主机名。请注意,它可能需要相对较高的Docker版本。
docker-build
也请参见有用的related post。