0

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

我知道build_args:docker-image-resource 有一个参数,但我无法让它复制以下 docker build 参数--dns=IP_ADDRESS...

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

4

1 回答 1

2

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

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

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

解决方法

为 RUN 步骤设置容器 DNS

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

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 的容器配置带有自定义 DNS 服务器的 Docker 守护程序。

dockerd --dns 8.8.8.8

如果您需要构建不同于运行容器的构建,则可以使用自定义 DNS 运行特定的“构建”Docker 实例。

设置主机 DNS

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

可以运行本地缓存服务器,该服务器可以配置为将您所需的请求转发到本地 DNS 服务器,并将其他任何内容转发到您的普通 DNS 服务器(类似于 Docker 在本地为容器 DNS 所做的事情)。

于 2017-02-21T07:20:40.693 回答