【问题标题】:Run docker image without port forwarding在没有端口转发的情况下运行 docker 映像
【发布时间】:2021-08-19 03:53:28
【问题描述】:

我正在使用以下命令在本地运行自定义映像(基于 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 或任何东西以在没有端口转发的情况下运行映像。

【问题讨论】:

  • locustfile.py 是否使用端口 8089,也许这就是问题所在?您可以使用 this version of the -p flag docker run -p 5557:8089 my-stress-test:0.1 将容器的端口 8089 映射到主机的 5557

标签: docker dockerfile docker-run


【解决方案1】:

使用 Docker,您无法在 dockerfile 中或在设计运行时以外的任何其他时间发布端口。

How to publish ports in docker files

最好向您的云提供商提出这个问题,即为什么您无法更改运行映像容器的命令。

【讨论】:

    【解决方案2】:

    在 dockers 中你应该知道它的网络是如何工作的。 有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
    

    【讨论】:

      猜你喜欢
      • 2021-12-28
      • 2013-12-31
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多