Docker 容器与主机中 Nexus 之间的连接
Posted
技术标签:
【中文标题】Docker 容器与主机中 Nexus 之间的连接【英文标题】:Connection between Docker container and Nexus in host machine 【发布时间】:2020-12-06 05:44:04 【问题描述】:我正在尝试构建一个 Docker 映像,当它执行命令 RUN mvn package
时,它能够使用安装在我的笔记本中的 Nexus 存储库。我将此行添加到我的 pom.xml:
<repositories>
<repository>
<id>maven-group</id>
<url>http://localhost:8081/repository/maven-group/</url>
</repository>
</repositories>
但是,应该将 localhost 替换为运行 Nexus 的主机名,但它位于容器主机(我的个人计算机)上。我应该在 url 中写什么来指向我的仓库?我的笔记本主机名无法从容器中解析。或者有没有其他方法可以连接到我的 Nexus 存储库?
【问题讨论】:
您可能会看看From inside of a Docker container, how do I connect to the localhost of the machine? 中描述的技术是否对您有帮助;他们更关注docker run
选项,但是例如,如果您不在本机Linux 主机上,host.docker.internal
主机名应该可以工作。
大卫的答案是正确的。大卫,您应该将此作为答案,以便 OP 可以授予您正确答案复选标记。
【参考方案1】:
我应该在 url 中写什么来指向我的 repo?
您可以将来自docker inspect
命令的Gateway
值放在那里:
$ docker inspect your_docker_container
在网络部分命令输出的最底部有:(我的容器的输出,你的可以不同)
"Gateway": "172.20.0.1"
所以对于你的例子:
<repositories>
<repository>
<id>maven-group</id>
<url>http://172.20.0.1:8081/repository/maven-group/</url>
</repository>
</repositories>
100% 确定您可以使用 telnet 检查此网关机器中是否打开了 8081 端口(从容器中运行):
$ telnet 172.20.0.1 8081
Trying 172.20.0.1...
Connected to 172.20.0.1.
Escape character is '^]'.
【讨论】:
以上是关于Docker 容器与主机中 Nexus 之间的连接的主要内容,如果未能解决你的问题,请参考以下文章