docker 仅在主机上公开端口

docker expose ports only on host

抱歉我的愚蠢问题。我正在使用 docker 并尝试将端口公开给本地主机。 我正在使用以下命令行:

docker run -d -p 127.0.0.1:8080:8081 --name nexus sonatype/nexus

我正在执行以下命令:

wget nexus:8080
--2015-03-26 19:31:58--  http://nexus:8080/
Résolution de nexus (nexus)... 127.0.53.53
Connexion vers nexus (nexus)|127.0.53.53|:8080...échec: Connexion refusée.

我的 ping 命令有问题,但是为什么,我找不到 nexus 服务器。

我已检查并且所有端口都在 (iptables) 上打开。

谢谢

你运行 wget 来自哪里?您只绑定到主机上的 localhost 接口,因此您只能从主机本身访问容器。如果在 docker run 命令中使用 0.0.0.0:8080:8081 是否有效? IIRC 0.0.0.0 是默认值,因此 8080:8081 也应该有效。

如果您不想让本地网络以外的任何人都可以访问该端口,请使用您的本地 IP 地址,您可以通过 运行 ifconfig 找到该地址。比如我在本地网络的IP是192.168.1.103,那么我会这样做:

docker run -d -p 192.168.1.103:8080:8081 --name nexus sonatype/nexus

像这样访问 docker 是个问题。 您可以试试这个来测试服务器:

docker exec -it nexus wget http://nexus:8080/

这将在 docker 图像内执行本地 wget。

docker 可以从您的节点外部和内部访问。 只是没有从您的通用网络接口到 docker 的路由。