【问题标题】:Set 'host' as default network for Docker将“主机”设置为 Docker 的默认网络
【发布时间】:2017-04-28 13:37:56
【问题描述】:

在我连接 Cisco VPN 之前,Docker 可以构建容器。之后,容器无法连接到外部互联网。这不仅仅是一个 DNS 问题,它根本无法路由到 Docker 自己的网络之外的任何东西。现在,我可以通过使用--net=host 运行容器来解决这个问题,但问题在于使用 dockerfiles 构建容器。我看不到在那里设置主机的方法。还有其他地方我可以将 docker 配置为始终使用“主机”作为默认网络吗?

【问题讨论】:

  • 打扰一下,您找到其他解决方案了吗?

标签: docker


【解决方案1】:

docker build command 也有一个--network 参数,您可以使用它来指定应该用于中间容器的网络模式。此标志与identically named parameter of the docker run command 具有相同的效果和可能的值。

--network (=default) 在构建过程中设置RUN 指令的联网模式

这应该允许您使用以下内容构建容器:

docker build -t yourimagename --network=host .

【讨论】:

  • 这似乎可以解决问题。反正有全局配置吗?还是将其作为参数传递是唯一的方法?
  • 据我所知,无法全局配置。不过,我对此并不完全确定。
  • docker build 页面列出了 --network 选项,但对有效值及其影响保持沉默@helmbert 你能扩展这个答案吗?
  • @chrisinmtown --network 选项在功能上与docker run 的相应选项相同。我已经相应地更新了答案。
【解决方案2】:

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

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

network_mode: "host"

请参阅documentation

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 2020-09-15
      • 2017-12-01
      相关资源
      最近更新 更多