如何configuration广场构build容器的DNS?

是否有可能configuration的汇集构build容器的DNS。

我知道有一个build_args:build_args: -image-resource的参数,但我无法得到它复制以下docker生成参数 – --dns=IP_ADDRESS...

有没有人在pipeline.yml中做过类似的事情?

由于Docker缺乏支持,您不可能通过Concourse进行设置。

你引用的--dns=IP_ADDRESS选项是一个--dns=IP_ADDRESS docker run参数。
docker build命令不允许您更改在其下运行的构build容器的DNS设置。

这个最近的github问题链接到一堆相关的问题:

  • #1916(评论)
  • #2267
  • #3851
  • #5779
  • #7966
  • #10171
  • #10324
  • #24928

解决方法

为RUN步骤设置容器DNS

您可以在Dockerfile的构build步骤中修改本地/etc/resolv.conf

 FROM busybox:latest RUN set -uex; \ echo "nameserver 8.8.8.8" > /etc/resolv.conf; \ cat /etc/resolv.conf; \ ping -c 4 google.com RUN cat /etc/resolv.conf 

尽pipe如此,下一次运行将会恢复正常。

设置守护程序DNS

您可以为不覆盖dns的所有容器configurationDocker守护程序和自定义DNS服务器 。

 dockerd --dns 8.8.8.8 

如果你需要的版本与运行你的容器的版本不同,可以使用自定义的DNS运行一个特定的Docker“Build”实例。

设置主机DNS

编辑主机上的/etc/resolv.conf以指向您的DNS。 这显然会影响在主机上运行的所有内容。

可以运行一个本地caching服务器,该服务器可以configuration为将所需的请求转发到本地DNS服务器,并将任何其他内容转发到正常的DNS服务器(类似于Docker在本地用于容器DNS的内容)。