Порты, используемые сервисом обратного прокси traefik, не сообщаются командой "docker ps" - PullRequest
0 голосов
/ 04 июня 2019

Команда "docker ps" не отображает порт 8080 traefik и другие порты, используемые из службы

Служба 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

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

В режиме роя порт не публикуется для отдельных контейнеров. Вместо этого порт публикуется через службу, которая затем использует VIP для отправки запроса по входящей сети на одну из реплик службы. Вы можете использовать следующее, чтобы увидеть эти порты:

docker service ls

Обратите внимание, что в команде docker ps порты, которые вы видите там, включают в себя «открытые порты», которые определены в образе. Это документация от создателя изображения к пользователю изображения, которая ожидает, что что-то прослушивает внутри контейнера на этом порту, и никоим образом не влияет на опубликованные порты на хосте или контейнере для работы в сети контейнера.

0 голосов
/ 04 июня 2019

Этот порт 80 является именно тем, который был указан в EXPOSE в Dockerfile и поэтому отображается там.Другие порты, которые вы определяете в своем файле, сопоставлены с service , который вы создаете с помощью Docker Swarm, а не с одним контейнером.Если это произойдет, тогда использование Swarm вообще бесполезно, потому что, если у вас есть более одного контейнера - что является своего рода точкой зрения использования Swarm - они не могут быть оба сопоставлены одному и тому же порту.

Этот пост , похоже, содержит некоторую полезную информацию о том, как публикация сервисов работает с Docker Swarm.

...