docker - 构建docker镜像时如何访问父主机服务?

标签 docker npm

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

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

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

failed, reason: connect EHOSTUNREACH 192.168.2.103:4873



也试过RUN wget xpto:8080并得到

failed: No route to host.



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

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

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

谢谢,

最佳答案

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

解决方案是在防火墙中添加一个异常(exception),问题就解决了。

关于docker - 构建docker镜像时如何访问父主机服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50377704/

相关文章:

copy - 在Container “error when loading shared libraries” DOCKER中运行文件时出错

docker - 如何在不杀死原来的pod的情况下更改k8s的pod限制?

docker - Google 不会从页面上的 api 索引数据

npm - 强制 YARN 和 NPM 仅从私有(private)存储库中提取包

javascript - 安装 Angular cli 时出错

drupal - 使用两个容器通过 docker 设置 drupal? nginx 和 mariadb

docker - yum 在 Centos 上安装 Docker |需要容器-selinux libseccomp slirp4netns fuse-overlayfs 错误

npm - npm -S 标志是什么意思?

node.js - 在windows上安装express的问题

node.js - Node 版本管理器不会更改 Ubuntu 中的 Node 版本。卡在系统 Node 版本上。如何使用 nvm 更改 Node 版本?