我写了一个简单的点对点系统,其中,在启动节点时
我的印象这是docker有用的典型任务,所以我想为这些同行制作一个容器(我以前使用docker的经验只是编写一个hello world容器)。
理想情况下,我会使用我现在运行的相同代码将我公开的端口映射(发布)到容器内的主机端口,但我可以想象这根本不可能,我可以通过启动使用脚本检查端口的可用性,然后在适当的空闲主机端口上运行容器。如果第一种可能,那就更好了。为了明确,我在Python中执行以下操作
port = 5001
while not port_is_free(port):
port += 1
第二部分真的必须从容器内处理。假设它已经使用命令docker run -p 5005:80 p2p-node
启动,那么我需要找出已发布的端口5005,暴露的端口80从容器中映射到。
搜索这个网站和互联网看起来更多的人有兴趣做同样的事情,但我找不到解决方案,也没有肯定这是根本无法做到的。
所以这是我想问的主要问题:如何在正在运行的docker容器中查看我的公开端口映射到哪些已发布端口?
答案 0 :(得分:1)
我的一些要求并不清楚。
但是,如果您只想知道哪个主机端口与容器的端口映射,则只需传递一个环境变量-e VAR=val即可。只是一个想法
启动容器:
docker run -p 5005:80 -e HOST_PORT=5005 p2p-node
从container
echo $HOST_PORT
有docker-py
,一个码头的python库。
答案 1 :(得分:1)
目前尚不清楚为什么要使用主机端口。在docker中,容器可以相互通信,而不必在主机上公开端口。
只要对等应用程序是容器化的,您就不需要暴露端口。容器可以通过Docker网络连接,内部端口可以用于容器之间的通信。