gpt4 book ai didi

networking - 从 docker 容器运行 docker build 时主机名解析失败

转载 作者:行者123 更新时间:2023-12-02 20:26:27 24 4
gpt4 key购买 nike

我们正在从 docker 容器运行 Jenkins CI 服务器,从 docker-compose 开始。 Jenkins 服务器正在运行一些作业,这些作业从 git 中提取项目并以执行 docker build . 的标准方式构建 docker 容器。在他们。为了能够在 docker 容器中使用 docker,我们安装在 /var/run/docker.sock 上使用 docker-compose 到 Jenkins 容器。

我们正在尝试构建的一些 Dockerfile-s 正在从我们的文件服务器下载文件(例如,第 3 方安装镜像)。这样的 Dockerfile 命令看起来像 RUN curl -o xx.zip http://fileserver/xx-1.2.3.zip .
fileserver通过 /etc/hosts 解析主机名文件,它解析为运行 Jenkins CI 服务器的主机的公共(public) IP。 Jenkins 容器的 docker-compose 配置还包括 extra_hosts指向fileserver的参数到主机的公共(public) IP。

问题是在自己的容器中运行 Jenkins 构建 docker 容器会失败,并显示一个简单的 Unknown host: fileserver。信息。如果我通过 docker exec -it <id> 进入 Jenkins 容器,我可以执行相同的curl命令,它会解析主机,但如果我尝试运行 docker build .那里尝试运行相同的 curl 命令,但无法解析主机。

我们的主机是 RHEL,我未能在我的桌面 Arch Linux 上重现该问题,所以我怀疑这是特定于 redhat 的问题(再次)。

最佳答案

添加 --network=host,以便构建环境将使用主机域解析。

docker build --network=host foo/bar:latest .

关于networking - 从 docker 容器运行 docker build 时主机名解析失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32352540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com