【发布时间】:2024-04-14 23:50:01
【问题描述】:
我们从 docker 容器运行 Jenkins CI 服务器,从 docker-compose 开始。 Jenkins 服务器正在运行一些作业,这些作业从 git 中提取项目并以标准方式在它们上执行 docker build . 构建 docker 容器。为了能够在 docker 容器中使用 docker,我们通过 docker-compose 将 /var/run/docker.sock 挂载到 Jenkins 容器中。
我们正在尝试构建的一些 Dockerfile-s 正在从我们的文件服务器下载文件(例如,第 3 方安装映像)。这样的 Dockerfile 命令看起来像 RUN curl -o xx.zip http://fileserver/xx-1.2.3.zip。
fileserver 主机名通过/etc/hosts 文件解析,并解析为运行 Jenkins CI 服务器的主机的公共 IP。 Jenkins 容器的 docker-compose 配置还包括将 fileserver 指向主机公共 IP 的 extra_hosts 参数。
问题是构建 docker 容器并在其自己的容器中运行 Jenkins 失败,并显示纯 Unknown host: fileserver 消息。如果我通过docker exec -it <id> 进入Jenkins 容器,我可以执行相同的curl 命令并解析主机,但如果我尝试在那里运行docker build . 并尝试运行相同的curl 命令,则无法解析主持人。
我们的主机是 RHEL,我未能在我的桌面 Arch Linux 上重现该问题,所以我怀疑这是 redhat 特有的问题(再次)。
【问题讨论】:
标签: networking docker redhat rhel docker-compose