在VPN后面构建docker

时间:2015-03-17 12:37:32

标签: ubuntu docker vpn centos6

在我现在的项目中,我们将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,并且在构建映像时没有任何问题。

3 个答案:

答案 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,所以我在对话框的设置中深入查看并选中了“忽略自动获取的路线”。

enter image description here

该图片来自this blog post

一旦我检查并重新连接到VPN,我就不再有重复的条目,我的Docker容器能够连接到Internet和VPN内的主机。

答案 2 :(得分:2)

如果我对您的理解正确,那么您想在构建Docker映像期间通过VPN访问svn存储库,即Dockerfile的指令之一必须解析主机名。

如果您的问题与域名解析有关,则可以使用--add-host的{​​{1}}选项(请参见doc)将IP明确映射到相关的主机名。请注意,它可能需要相对较高的Docker版本。

docker-build

也请参见有用的related post