ждать запуска Docker в Mac OS через скрипт оболочки? - PullRequest
0 голосов
/ 02 февраля 2019

Я пишу сценарий оболочки, в котором я устанавливаю докер на Mac через терминал.Я могу установить через brew cask install docker.Теперь это докер на основе графического интерфейса, который ожидает продолжения пользовательского события.Теперь в моем сценарии оболочки я хочу задержать выполнение до запуска и запуска docker.Я нашел хороший скрипт, который проверяет, работает ли Docker или нет.Я могу проверить это, как показано ниже.

#!/bin/bash

rep=$(curl -s --unix-socket /var/run/docker.sock http://ping > /dev/null)
status=$?

if [ "$status" == "7" ]; then
    echo 'not connected'
    exit 1
fi

echo 'connected'
exit 0

Я попытался включить его в цикл, чтобы до состояния 0 он снова и снова проверял и удерживал исключение.У меня нет опыта в создании сценариев оболочки, но я попытался запустить, но не смог.как мне этого добиться.

Мой скрипт

#!/bin/bash

status=0

test() {
rep=$(curl -s --unix-socket /var/run/docker.sock http://ping > /dev/null)
status=$?
}

checkDocker() {
while [ "$status" == "7" ]
do
    echo waiting docker to start
    test
done
}

1 Ответ

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

Поднято с https://stackoverflow.com/a/48843074/133479, вот сценарий, который я придумал, пытаясь заставить ваш работать.Проверка выхода из curl является сложной задачей, потому что во время запуска Docker он ответит с ошибкой, но поскольку ответ происходит, curl считает, что все в порядке, а для $status установлено значение, отличное от * 1006.*.

#!/bin/bash

while (! docker stats --no-stream ); do
  # Docker takes a few seconds to initialize
  echo "Waiting for Docker to launch..."
  sleep 10
done

docker start $container

Однако следует учитывать, что это в конечном итоге приводит к выводу, поэтому вы можете решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...