【问题标题】:Ports used from traefik reverse proxy service are not reported from "docker ps" command“docker ps”命令不报告从 traefik 反向代理服务使用的端口
【发布时间】:2019-06-04 10:06:36
【问题描述】:

“docker ps”命令不显示 traefik 端口 8080 和服务使用的其他端口

traefik 服务在 docker-compose.yml 中定义如下:

...
  traefik:
    image: traefik:1.7-alpine
    command: --docker --docker.swarmMode  --docker.domain=mylocal.swarm --docker.watch --api --logLevel=INFO \
      --entryPoints='Name:http Address::80' \
      --entryPoints='Name:https Address::443 TLS'
    networks:
      - net-traefik
    deploy: *default-deploy
    ports:
      - "8091:80"
      - "8093:443"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    logging: *default-logging

“docker ps”命令输出为:

CONTAINER ID    IMAGE                COMMAND                 CREATED    STATUS        PORTS      
...
635a4e017bb5    traefik:1.7-alpine   "/entrypoint.sh o…"      …          …            80/tcp     
...

为什么只显示80端口?我希望还能找到 443 和 8080

【问题讨论】:

  • 如果你运行这个docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/etc/traefik/traefik.toml traefik,输出是什么?
  • 然后运行docker ps...注意...在此之前确保您已经停止了 docker-compose 容器
  • bash # docker run -d -p 8080:8080 -p 80:80 traefik bb5c46c778270209610c5662808675c5070cc70742abe139f46272e8c98a8a41 [root@srv1]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bb5c46c77827 traefik "/traefik" 6 seconds ago Up 4 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:8080->8080/tcp dazzling_borg 在这种情况下,一切看起来都很好。但就我而言,我使用 traefik 作为在 docker swarm 上运行的服务
  • 这意味着,您的 docker-compose 文件中有问题。

标签: docker traefik


【解决方案1】:

此端口80 只是在EXPOSE in the Dockerfile 下指定的端口,因此会显示在那里。您在文件中定义的其他端口映射到您使用 Docker Swarm 创建的服务,而不是单个容器。如果发生这种情况,那么使用 Swarm 就毫无用处了,因为如果你有多个容器——这就是使用 Swarm 的重点——它们不能都映射到同一个端口。

This blog post 似乎包含一些关于如何使用 Docker Swarm 发布服务的好信息。

【讨论】:

    【解决方案2】:

    使用 swarm 模式,端口不会发布到单个容器上。相反,端口是通过服务发布的,然后服务使用 VIP 通过入口网络将请求发送到服务的副本之一。您可以使用以下命令查看这些端口:

    docker service ls
    

    注意在docker ps 命令中,您看到的端口包括图像中定义的“暴露端口”。这些是从镜像创建者到镜像用户的文档,期望在此端口上侦听容器内的某些内容,并且绝不会影响主机或容器上的已发布端口到容器网络。

    【讨论】:

    • 好点。我完全忘记了我应该使用docker service ls 命令而不是docker ps 命令来查看服务使用的端口
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    相关资源
    最近更新 更多