【问题标题】:docker container with multiple tcp ports具有多个 tcp 端口的 docker 容器
【发布时间】:2017-09-20 15:57:37
【问题描述】:

我根据 github 链接创建了一个 docker 容器 - https://github.com/wurstmeister/kafka-docker

并注意到显示了 3 个端口,其中一个端口被映射到主机。

我了解从容器向主机系统公开的端口 2181。

但是这 3 个端口是什么 - 22/tcp、2888/tcp、3888/tcp ..如果这些端口没有暴露给主机系统,为什么要显示它们。

a5779d08be33        wurstmeister/zookeeper                                                             "/bin/sh -c '/usr/..."   40 minutes ago      Up 3 minutes        22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp   kafkadocker_zookeeper_1

【问题讨论】:

    标签: docker


    【解决方案1】:

    如果你运行下面的命令,拉取图像后

    docker history --no-trunc wurstmeister/zookeeper | grep EXPOSE
    ... EXPOSE 2181/tcp 2888/tcp 3888/tcp 
    ... EXPOSE map[22/tcp:{}]
    

    所以您看到用于构建此映像的 Dockerfile 提到端口 2181, 2888, 3888, 22 应该被公开。

    docker ps 将向您显示图像元数据中提到的端口以及您映射的端口。

    假设我运行以下命令

    docker run --rm nginx
    

    docker ps 将显示

    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    e39964ca9bb8        nginx               "nginx -g 'daemon ..."   2 seconds ago       Up 1 second         80/tcp              suspicious_jones
    

    这告诉图像元数据表明端口 80 是容器内的程序可能正在侦听的端口。现在,如果我运行与下面相同的容器

    docker run -p 8080:8080  --rm nginx
    

    docker ps 将显示

    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                            NAMES
    93df718d1d86        nginx               "nginx -g 'daemon ..."   26 seconds ago      Up 25 seconds       80/tcp, 0.0.0.0:8080->8080/tcp   confident_bassi
    

    所以它是图像端口元数据和您实际映射的端口的组合。当我们使用-P 标志时,这个元数据会派上用场

    docker run -P --rm nginx
    

    现在docker ps给我们

    CONTAINER ID        IMAGE               COMMAND                  CREATED STATUS              PORTS                   NAMES
    
    bf70d3212ee9        nginx               "nginx -g 'daemon ..."   1 second ago        Up 1 second         0.0.0.0:32768->80/tcp   hungry_keller
    

    如您所见,图像元数据中提到的每个端口都会自动映射到主机上的可用端口

    【讨论】:

      猜你喜欢
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多