如何在不绑定到特定端口的情况下运行两个服务实例

时间:2018-02-12 06:09:41

标签: docker docker-compose dockerfile

我有两个运行docker容器的问题声明。

  1. 运行docker容器的两个实例。
  2. 我正在运行一个容器,说测试服务。当我执行命令只创建一个名为 test-service 容器时。我想更改命令并再创建一个容器实例。

    1. 动态端口号分配给容器。
    2. 我绑定端口说 8080:8080 。我想以这样的方式配置它,使端口号是动态的。

      我用来运行容器的命令如下:

      <BugWorkItems category="Microsoft.BugCategory" pluralName="Bugs" singularName="Bug">
       <States>
        <State type="Proposed" value="New" />
        <State type="Proposed" value="Approved" />
        <State type="InProgress" value="Committed" />
        <State type="Complete" value="Done" />
      </States>
      

      测试服务是节点服务。

      请告诉我上述命令需要进行哪些修改。

1 个答案:

答案 0 :(得分:0)

第二个问题:

使用--publish-all标志而不是提供端口映射。

$ docker run --publish-all --network ${NETWORK} --name ${SERVICE_NAME} --restart always -m 1024M --memory-swap -1 -itd ${ORGANISATION}/${SERVICE_NAME}:${VERSION}

这会将容器的端口发布到主机端口。主机端口将是动态的。并且所有容器端口都将暴露出来。

但是如果要公开特定端口,请使用-p :<port>

$ docker run -p :${INTERNAL_PORT_NUMBER} --network ${NETWORK} --name ${SERVICE_NAME} --restart always -m 1024M --memory-swap -1 -itd ${ORGANISATION}/${SERVICE_NAME}:${VERSION}

${EXTERNAL_PORT_NUMBER}部分留空,然后动态选择一个端口。

第一个问题:

您可以使用docker-compose。请检查此answer

或者,您可以多次运行docker run。在这种情况下,请使用不同的--name