如何在Docker容器中转发所有端口

12

考虑:

docker run -p 5000:5000 -v /host/:/host appimage

它将 5000 转发至 50000

即使是多次也一样:

docker run -p 5000:5000 -p 5001:5001 -v /host/:/host appimage

我想知道的是:

docker run -p  allports:allports

是否有任何命令可以将容器中的所有端口转发?因为在我的情况下,我正在运行Flask应用程序。出于测试目的,我想运行多个Flask实例。因此,对于每个Flask实例,我都希望以不同的端口运行它。这种自动多端口转发会很有帮助。


1
请检查“-P”选项。为使其正常工作,您的Dockerfile必须公开一个端口号。 - Mark O'Connor
我认为没有这样的选项。这可能会非常误导人。考虑到众所周知的端口,例如如果所有端口都被转发,你的浏览器将无法工作。 - Opal
2个回答

8
您可以使用-p选项暴露一系列端口,例如:
docker run -p 2000-5000:2000-5000 -v /host/:/host appimage

详细信息请参见Docker运行参考文档。


3

您可能已经使用 docker run --net host ... 进行了工作设置,这种情况下主机的网络直接暴露给容器,并且所有端口绑定都是“公共”的。我尚未测试过多个容器同时使用此方法的情况,但它可能完全正常工作。


从Docker 19开始,docker run --help | grep net 返回两个与 --network 相关的选项,但不清楚这些是否与此处建议的相同。 - vhs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接