如何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的内容)。