Docker Remote API не дает точного списка запущенных контейнеров в рое

В настоящее время я сталкиваюсь со следующей проблемой:

Я установил 3 виртуальные машины с Debian и установил докер. Нет брандмауэра на месте. Я создал рой, сделав одну машину управляющим, и присоединился к двум другим в качестве рабочих, как описано на бесчисленных веб-страницах. Работает отлично. В менеджере роя я активировал удаленный доступ к API через -H:4243... и перезапустил демона. (только в менеджере роя) 'docker node ls' квалифицирует все активные узлы. Когда я звоню http://:4243/node, я вижу все узлы. Я создал оверлейную сеть (скорее всего, она не нужна для иллюстрации моей проблемы. Стандартные входные сети тоже должны быть в порядке) Затем я создал сервис с 3 репликами. указав имя, мою оверлейную сеть и некоторые параметры env. "Docker Service PS" дает мне информацию, что каждый узел запускает один контейнер с моим изображением. Двойная проверка с помощью 'docker ps' на каждом узле говорит о том же.

Моя проблема: при вызове http://:4243/container /json я вижу только один контейнер, тот, что в менеджере роя.

Я ожидаю увидеть 3 контейнера, по одному для каждого узла. Вопрос почему?

Есть идеи?

Этот вопрос не кажется моей проблемой

1 ответ

Решение

Перечисление контейнеров через /containers/json показывает только "локальные" контейнеры на этом узле. Если вы хотите получить полный обзор каждого контейнера на каждом узле, вам нужно использовать конечные точки с поддержкой роя. Docker Services - это абстракция высокого уровня, а Tasks - абстракция уровня контейнера. См. https://docs.docker.com/engine/api/v1.30/ для справки.

Если вы выполняете запрос на вашем узле менеджера в http://:4243/tasks Вы должны увидеть каждую задачу (иначе контейнер), на каком узле они работают, и к какой службе они принадлежат.

Другие вопросы по тегам