【问题标题】:how to interpret the port information for docker containers如何解释 docker 容器的端口信息
【发布时间】:2020-01-30 21:01:56
【问题描述】:

我刚刚使用了一个示例 docker compose yml 文件来创建一些容器,我最终得到了这个:

PS C:\Users\jj> docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                  NAMES
70ef2ac09df0        couchdb:latest      "tini -- /docker-ent…"   9 seconds ago       Up 6 seconds        4369/tcp, 9100/tcp, 0.0.0.0:25984->5984/tcp, 0.0.0.0:25986->5986/tcp   jj_server-2_1
4ee92fc98788        couchdb:latest      "tini -- /docker-ent…"   9 seconds ago       Up 5 seconds        0.0.0.0:5984->5984/tcp, 4369/tcp, 9100/tcp, 0.0.0.0:5986->5986/tcp     jj_server-0_1
37c1a3a9be48        couchdb:latest      "tini -- /docker-ent…"   9 seconds ago       Up 5 seconds        4369/tcp, 9100/tcp, 0.0.0.0:15984->5984/tcp, 0.0.0.0:15986->5986/tcp   jj_server-1_1

试图了解端口信息。

 4369/tcp, 9100/tcp, 0.0.0.0:15984->5984/tcp, 0.0.0.0:15986->5986/tcp   jj2_server-1_1

这是我在使用的 docker-compose.yml 中的部分内容:

  server-0:
    environment:
      COUCHDB_PASSWORD: -pbkdf2-847043acc65626c8eb98da6d78682fbc493a1787,f7b1a3e4b624f4f0bbfe87e96841eda0,10
      COUCHDB_SECRET: 0123456789abcdef0123456789abcdef
      COUCHDB_USER: couchdb
      NODENAME: couchdb-0
    image: couchdb:latest
    networks:
      network:
        aliases:
          - couchdb-0
    ports:
      - "5984:5984"
      - "5986:5986"
    volumes:
      - "volume-0:/opt/couchdb/data"

完整的 yml 文件可以在这里找到:https://github.com/apache/couchdb-docker/issues/74 我唯一改变的是节点的名称。

在这个特定容器的情况下......这是否意味着主机机器的端口 5984 映射到容器的 5984?而在server2的情况下,HOST机器的25984端口映射到容器的5984?

谁能解释一下其他端口?在某些情况下,4369 似乎用于集群......比如 RabbitMQ ......但我不确定这是否适用于 couchDB。 9100 也是如此……不知道为什么会创建它。对不起,我是码头菜鸟。还有一个 couchDB 菜鸟。

谢谢。

【问题讨论】:

    标签: docker couchdb


    【解决方案1】:

    在这个特定容器的情况下...是否意味着 HOST 机器的5984端口映射到容器的5984?在这种情况下 server2,HOST机器的25984端口映射到容器的 5984?

    是的,意思是:

    • 宿主机的5984端口会映射到容器jj_server-0_1的5984端口
    • 宿主机的25984端口会映射到容器jj_server-2_1的5984端口
    • 请注意,所有在主机内的端口以及不同的容器都需要是唯一的,而不同的容器可以暴露相同的端口。意思是jj_server-0_1和jj_server-2_1都可以暴露5984端口

    谁能解释一下其他端口? 4369似乎用于 在某些情况下集群......就像RabbitMQ..但我不确定是否 这就是couchDB的情况。 9100 也是如此……不知道为什么 被创建。对不起,我是码头菜鸟。还有一个 couchDB 菜鸟。

    一些其他端口,如 4369 或 9100,是由命令 EXPOSE 5984 4369 9100 创建的,您可以在它们的 Dockerfile 中找到。这只是一种方便且可选的方式来指示此映像/容器将侦听这些端口,如果需要,您可以将它们公开或链接到您的主机。

    【讨论】:

      【解决方案2】:

      是的,docker 的这个特性称为暴露模式,其中一些端口暴露给主机系统,因此您可以从 Docker 外部访问它们。在您的示例中,端口 4369 仅在内部使用且未公开,而其他 2 已公开并且可以从外部访问。

      还可以看出,所有 3 个容器都将相同的内部端口暴露给某些主机端口,这意味着您可以通过端口 5984、15984 和 25984 从外部访问它们,同样适用于 5986、15986、25986。

      0.0.0.0:25984->5984/tcp, 0.0.0.0:25986->5986/tcp jj_server-2_1 
      0.0.0.0:5984->5984/tcp, 4369/tcp, 9100/tcp, 0.0.0.0:5986->5986/tcp     jj_server-0_1
      0.0.0.0:15984->5984/tcp, 0.0.0.0:15986->5986/tcp jj_server-1_1
      

      我也不是沙发数据库用户,所以无法从经验中告诉你,但这里是官方文档的链接,其中包含端口及其用法的说明CouchDB ports

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 2018-11-30
        • 2018-02-22
        • 1970-01-01
        相关资源
        最近更新 更多