Как определить, запущен ли Docker и полностью ли запущен базовый демон? - PullRequest
0 голосов
/ 12 февраля 2019

Я запускаю докер Virtuoso и загружаю в него данные.

У меня все это в скрипте bash.Поскольку эта команда запускает последовательную загрузку данных, обычно происходит сбой, поскольку Virtuoso еще не запускается полностью.

Простое решение - просто добавить задержку (бездействие), и это работает.Это немного грязное решение.

Я нашел эту команду

docker inspect -f {{.State.Running}} $CONTAINER_ID

Но это говорит только о том, работает контейнер или нет.

Есть ли способ проверить, полностью ли запущен демон в Docker (в данном случае Virtuoso) перед загрузкой данных?

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Общий процесс состоит в том, чтобы определить проверку работоспособности для вашего приложения, а затем проверить, что состояние работоспособности:

docker inspect --format '{{.State.Health.Status}}' $container_id

Требуемый вывод - healthy.

Для получения дополнительной информации о том, какопределите проверку работоспособности для своего изображения, см. https://docs.docker.com/engine/reference/builder/#healthcheck

Фактическая команда, которую вы определяете для проверки работоспособности, зависит от приложения, запускаемого внутри контейнера.

0 голосов
/ 12 февраля 2019

Вы можете проверить, открыт ли порт TCP, с помощью wait-for-it script:

container_ip = $(docker inspect --format "{{range .NetworkSettings.Networks}}{{ .IPAddress }}{{end}}") $CONTAINER_ID
until $(./wait-for-it.sh $container_ip:<virtuoso_port> --timeout=1)
do 
 echo "Virtuoso is not responding"; 
done;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...