docker - 如何为Concourse构建容器配置dns?

标签 docker dns continuous-integration concourse

是否可以为场所构建容器配置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链接到一系列相关问题:

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

  • 解决方法

    为运行步骤设置容器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/

    相关文章:

    git - Jenkins - 所有分支机构一份工作还是每个分支机构一份工作?

    reactjs - 如何使用 VS Code devcontainers 在react.js 中设置热重载

    docker - 当使用 postman 的相同请求正常工作时,使用 Symfony HttpClient 的请求返回代码 0

    docker - 如何将命令行参数传递给 docker 镜像

    http - DNS 查找时间和 Windows DNS 缓存

    docker - 无法访问Docker容器中的Spring Boot API

    docker - 错误:找不到指定的Dockerfile:Dockerfile-dev

    azure - 如何将我的 GoDaddy 域连接到 Azure VM 服务器?

    amazon-web-services - 如何将 WWW 添加到 AWS Route53 中的域?

    .net - CI : Hudson with . 网络与 CruiseControl.Net