Как узнать, почему моя служба Docker находится в состоянии ожидания?
Я играю Docker Swarm
и используя docker-compose.yml
с docker deploy
. Все службы развертываются, кроме одного, который остается в состоянии ожидания. Я добавил ограничение, которое связывает эту службу с одним из узлов. Мой вопрос заключается не столько в этой конкретной проблеме, сколько в том, как устранить неполадки. Документация Docker указывает на возможные причины, по которым служба находится в состоянии ожидания, но ни одна из них не применяется (проблема ограничения, дренаж ресурсов).
Могу ли я увидеть "процесс мышления докеров" где-то? Что он думает?
Изменить: должно было быть понятнее, что я использую новую, введенную 1.12, рой.
Ответы
Ответ 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?....