首页 > 解决方案 > 构建docker镜像时如何访问父主机服务?

问题描述

在构建 docker 映像时,我想访问托管在父主机上的服务。例如,假设我需要访问npm在主机上运行的私有存储库xpto:8080。在 xpto 上,我还在 Dockerfile 调用上构建一个新图像

RUN npm set registry http://xpto:8080
RUN npm install

当我尝试时,docker build -t=my_image .我总是得到

失败,原因:连接EHOSTUNREACH 192.168.2.103:4873

也试过RUN wget xpto:8080

失败:没有到主机的路由。

尝试使用 --add-host 参数,但它没有锻炼。

奇怪的是,当我尝试从另一个容器访问父主机服务时,它运行正常,但必须添加 --net="host" 参数,如下所示:

docker run --it --rm --net="host" my-test-image sh
wget xpto:8080

问题是 docker build 不支持这个 --net 参数!

谢谢,

标签: dockernpm

解决方案


由于某些未知原因,centosOS 防火墙仅在构建时阻止连接,而不是在运行时阻止。

解决方案是在防火墙中添加一个例外,问题就解决了。


推荐阅读