如果容器已经创build并正在运行,如何使用docker将主机端口分配给容器端口?

我们可以创build一个新的容器并在docker run命令中定义你的应用程序端口

sudo docker run -d -p 5000:5000 training/webapp python app.py 

要么

 sudo docker run -d -P training/webapp python app.py 

但是,如果有人忘记在docker run命令中指定-p或-P选项呢? 容器被创build并在本地运行应用程序。 现在,我怎样才能将应用程序在本地运行的端口分配给我的Ubuntu主机端口? 请帮忙。 谢谢。

简而言之:你不能。 您需要停止容器(或不要),并使用适当的参数启动一个新容器。

Docker启动一个本地代理,并设置适当的NAT的iptables。 如果你真的不能启动一个新的容器,你可以手动设置iptables并启动一个socat。 您可以查看Docker代码的networking部分以获取更多信息。