【问题标题】:Pass --net=host to docker build将 --net=host 传递给 docker build
【发布时间】:2015-02-10 16:22:31
【问题描述】:

要将其他选项传递给docker build,您可以在/etc/default/docker 中指定DOCKER_OPTS,但是--net 不可用。构建容器时是否可以使用主机的网络堆栈?

我正在运行 Docker 版本 1.3.2,构建 39fa2fa。

谢谢!

【问题讨论】:

  • 你为什么要这样做?
  • 我想在构建容器时使用我的主机网络堆栈。我在构建时无法让 docker 容器使用我公司的 Intranet 的 dns 服务器。运行容器时,使用 --net=host 是使其正常工作的最简单方法。

标签: docker


【解决方案1】:

尝试使用--network 而不是--net。它是 1.25 API 和 sets the networking mode for the RUN instructions 中的新功能。

【讨论】:

  • 我尝试了 Sergey 的回答 .. 只是那个没有用...然后我在上面尝试了这个...有效!
【解决方案2】:

从最新版本(当前是 docker ce v17)开始,可以将 --network=host 添加到您的 docker build 命令中,这与使用 docker run 时的 --net=host 类似!

【讨论】:

    【解决方案3】:

    要解决此问题,请将 docker daemon 配置为使用您公司的 DNS 服务器。例如,如果您的 resolv.conf 具有以下配置:

    $> cat /etc/resolv.conf
    domain mycompany
    search mycompany
    nameserver 10.123.123.123
    

    更改 /etc/default/docker 以包含以下内容:

    DOCKER_OPTS="--dns 10.123.123.123"
    

    然后重启 docker 守护进程:

    sudo service docker restart
    

    现在,容器在构建操作期间可以访问内网。

    相关回答:Dockerfile: Docker build can't download packages: centos->yum, debian/ubuntu->apt-get behind intranet

    【讨论】:

    • 我还必须删除私有 DNS,如 (askubuntu.com/questions/627899/…) BONUS oneliner: DOCKER_OPTS=$(cat /etc/resolv.conf | grep nameserver | awk '{ printf " --dns " $2 }') && sudo service docker restart
    • 要在 Windows 中找到您的 DNS ip,请使用 ipconfig /all | findstr /R "DNS\ Servers" 原superuser.com/a/486925
    猜你喜欢
    • 2019-12-30
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多