首页 > 解决方案 > 如何通过容器的 IP 地址访问 Docker 容器的服务?

问题描述

我有点困惑。尝试在 Docker 容器内同时运行监听端口 8080 的 HTTP 服务器和监听端口 22 的 SSH 服务器,我设法完成了后者,但奇怪的是不是前者。

这是我想要实现的目标以及我是如何尝试的:

我想使用分配给容器的 IP 地址访问在 Docker 容器内运行的服务:

ssh user@172.17.0.2
curl http://172.17.0.2:8080

注意: 我知道这不是您配置真实 Web 服务器的方式,但我希望容器模仿运行这两种服务的嵌入式设备,而我并非一直都可用。(所以它实际上只是一个没有安全要求的本地非生产事物)。

我没想到集成 SSH 服务器会很容易,但令我惊讶的是,我刚刚安装并启动了它,并且不需要做任何其他事情就可以通过 ssh(否EXPOSE 22--publish)连接到机器。

现在,我想通过端口 8080 上的 HTTP 访问容器并进行了修改--publishEXPOSE但仅设法使 HTTP 服务器localhost/127.0.0.1在主机上可用。所以现在我可以通过

curl http://127.0.0.1:8080/

但我想通过相同的 IP 地址访问这两个服务,但不是 localhost(例如,容器随机分配的地址对我来说完全没问题)。

很遗憾

curl http://172.17.0.2:8080/

每次我绑它时都等到它超时。

我尝试docker run-p 8080,和更多的组合,一起或不一起,-p 127.0.0.1:8080:8080但没有成功。-p 172.17.0.2:8080:8080EXPOSE 8080Dockerfile

为什么我可以通过端口 22 访问容器而不暴露任何东西?

以及如何通过容器的 IP 地址访问它?

更新:看起来我正在经历这里描述的内容。

标签: dockerportip-address

解决方案


推荐阅读