Подтвердить что ты не робот

Как узнать, почему моя служба Docker находится в состоянии ожидания?

Я играю Docker Swarm и используя docker-compose.yml с docker deploy. Все службы развертываются, кроме одного, который остается в состоянии ожидания. Я добавил ограничение, которое связывает эту службу с одним из узлов. Мой вопрос заключается не столько в этой конкретной проблеме, сколько в том, как устранить неполадки. Документация Docker указывает на возможные причины, по которым служба находится в состоянии ожидания, но ни одна из них не применяется (проблема ограничения, дренаж ресурсов).

Могу ли я увидеть "процесс мышления докеров" где-то? Что он думает?

Изменить: должно было быть понятнее, что я использую новую, введенную 1.12, рой.

4b9b3361

Ответ 1

Я объясню, как отлаживать, когда служба не запускается, как ожидалось, в режиме роуминга докеров.

Прежде всего, получите идентификатор задачи с docker service ps <service-name>.

Далее, полезно проверить метаданные с помощью docker inspect <task-id>. В частности, сообщение об ошибке перед запуском контейнера находится в поле состояния, а затем подтвердите, было ли оно запущено с заданными параметрами.

Если задача имеет идентификатор контейнера, после запуска контейнера она была аномально отключена, поэтому проверьте журнал контейнера с docker logs <container-id>

Надеюсь, это поможет вам.

Ответ 2

docker run swarm имеет параметр --debug, который может рассказать вам больше.

См. docker swarm issue 2341 или проблема докера 24982, чтобы увидеть этот параметр, используемый для отладки ожидающих состояний.

Например:

(unknown): 192.168.99.106:2375(node2 ip)
└ ID:
└ Status: Pending
└ Containers: 0
└ Reserved CPUs: 0 / 0
└ Reserved Memory: 0 B / 0 B
└ Labels:
└ Error: Cannot connect to the Docker daemon. Is the docker daemon running on this host?....