我正在使用以下命令在本地运行自定义图像(基于 docker 图像 Locust)
docker run -p 5557:5557 my-stress-test:0.1
我的 dockerfile 如下所示
FROM locustio/locust:latest
COPY ./ /mnt/locust
CMD ["-P", "5557", "-f", "/mnt/locust/locustfile.py"]
现在,我将此映像部署到我的云服务上,该服务运行此映像生成命令
docker run -p 5557 my-stress-test:0.1
这是我无法更改的命令。但是,我无法在没有端口转发的情况下运行映像,例如 -p 5557:5557
。如何更改我的 dockerfile 或任何内容以在没有端口转发的情况下运行映像。
答案 0 :(得分:0)
使用 Docker,您不能在 dockerfile 中或在设计运行之外的任何其他时间发布端口。
How to publish ports in docker files
最好向您的云提供商提出这个问题,以了解为什么您无法更改运行图像容器的命令。
答案 1 :(得分:0)
在 docker 中,你应该知道它的网络是如何工作的。 有 3 种类型的端口配置:
docker run my-stress-test:0.1
docker run -p 5557:5557 my-stress-test:0.1
docker run -p 127.0.0.1:5557:5557 my-stress-test:0.1
在第一种类型中,只有与此应用处于同一网络的应用才能连接到该端口。 在第二种类型中,容器网络内外的所有应用程序都可以连接到该端口。 第三种类型只有容器网络内的应用,宿主机内的其他应用可以连接到应用,宿主外的应用无法连接到应用。
我认为第三种类型是您正在寻找的。p>
如果您的主机中有多个网络,并且您希望其他主机上的其他应用程序访问该应用程序,则可以将该网络 ip 绑定到该端口。例如
docker run -p 192.168.0.10:5557:5557 my-stress-test:0.1