我有点困惑。尝试同时运行侦听端口8080的HTTP服务器和侦听Docker容器内部端口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访问容器,并摆弄--publish
和EXPOSE
,但只能通过主机上的localhost/127.0.0.1
使HTTP服务器可用。所以现在我可以通过
curl http://127.0.0.1:8080/
但是我想通过 NOT localhost
相同的IP地址访问这两种服务(例如,对我来说,随机分配的容器的地址完全可以)。
不幸的是
curl http://172.17.0.2:8080/
等到每次我绑起来都超时为止。
我在docker run
中尝试将-p 8080
与-p 127.0.0.1:8080:8080
,-p 172.17.0.2:8080:8080
,EXPOSE 8080
以及更多组合一起使用或不使用Dockerfile
没有成功。
为什么不暴露任何东西就可以通过端口22访问容器?
如何通过容器的IP地址访问它?
更新:我似乎正经历着here的描述。