将“host”设置为Docker的默认网络

11

Docker可以正常构建容器,但一旦连接Cisco VPN后,容器就无法连接到外部互联网。这不仅是DNS问题,还无法路由到Docker自己网络之外的内容。现在,我可以使用--net=host在容器中运行来绕过此问题。但是,在使用docker文件构建容器时存在问题。我看不到在那里设置主机的方法。是否有其他地方可以配置docker,使其始终使用“host”作为默认网络?


对不起,你找到其他解决方案了吗? - Psychozoic
3个回答

11
docker build 指令 也有一个--network 参数,您可以使用它来指定应该用于中间容器的网络模式。这个标志具有与 docker run 命令中同名参数 相同的效果和可能的值。

--network (=default) 设置构建期间 RUN 指令的网络模式

这将使您能够使用以下命令构建容器:

docker build -t yourimagename --network=host .

1
那似乎确实行得通。有没有办法在全局范围内配置这个?还是将其作为参数传递是唯一的方法? - directedition
据我所知,没有一种全局配置的方法。不过,我并不完全确定。 - helmbert
1
Docker构建页面列出了--network选项,但对有效值及其影响保持沉默。@helmbert,您能否扩展此答案? - chrisinmtown
@chrisinmtown,“--network”选项在功能上与“docker run”的相应选项完全相同。我已经相应地更新了答案。 - helmbert

2

Dockerfile是定义如何构建镜像的文件。除了设置默认命令和/或入口点之外,它没有运行时参数。

网络只是运行时关注的问题。如果使用docker run参数不适合,也许可以使用docker-compose.yml和docker-compose工具或swarm。在这两种情况下,您可以为docker-compose.yml中定义的容器定义网络参数。

network_mode: "host"

请参阅文档

0

我在运行 CentOS 7 的虚拟机上遇到了这个问题。在我升级了一些 yum 包 (containerd, container-selinux, docker-cedocker-ce-cli) 后,问题得到了解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接