是否可以为场所构建容器配置dns。
我知道docker-image-resource有一个build_args:
参数,但我无法获取它来复制以下docker build参数--dns=IP_ADDRESS...
有人在他们的pipeline.yml中做过类似的事情吗?
最佳答案
由于缺乏Docker支持,您不太可能通过Concourse进行设置。
您引用的--dns=IP_ADDRESS
选项是docker run
参数。docker build
命令不允许您更改在其下运行的构建容器的DNS设置。
此recent github issue链接到一系列相关问题:
解决方法
为运行步骤设置容器DNS
您可以在Dockerfile的构建步骤中修改本地
/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
不过,接下来的运行步骤将恢复正常。
设置守护进程DNS
您可以为所有不覆盖dns的容器配置Docker daemon with a custom DNS server。
dockerd --dns 8.8.8.8
如果您需要与运行容器的容器不同的构建,则可以使用自定义DNS运行Docker的特定“构建”实例。
设置主机DNS
在主机上编辑
/etc/resolv.conf
以指向您的DNS。显然,这会影响主机上运行的所有内容。可以运行本地缓存服务器,该服务器可以配置为将所需请求转发到本地DNS服务器,并将其他任何内容转发到普通DNS服务器(类似于Docker在本地对容器DNS所做的操作)。
关于docker - 如何为Concourse构建容器配置dns?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42355758/