如何为concourse构建容器配置dns?

时间:2017-02-20 23:02:19

标签: docker dns continuous-integration concourse

是否可以为concourse构建容器配置dns。

我知道docker-image-resource存在build_args:参数,但我无法复制以下docker构建参数--dns=IP_ADDRESS...

有没有人在他们的pipe.yml中做过类似的事情?

1 个答案:

答案 0 :(得分:2)

由于Docker缺乏支持,您不太可能通过Concourse设置此项。

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

recent github issue链接到一系列相关问题:

变通方法

为RUN步骤设置容器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执行的操作)。