Ответ 1
У вас есть утилита под названием pgrep
почти на всех системах Linux.
Вы можете просто сделать:
pgrep -f docker > /dev/null || echo "starting docker"
Замените команду echo
вашей командой запуска докера.
Я пытаюсь создать утилиту bash script, чтобы проверить, запущен ли демон docker на моем сервере. Есть ли лучший способ проверить, работает ли демон docker на моем сервере, кроме запуска такого кода?
ps -ef | grep docker
root 1250 1 0 13:28 ? 00:00:04 /usr/bin/dockerd --selinux-enabled
root 1598 1250 0 13:28 ? 00:00:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --runtime docker-runc
root 10997 10916 0 19:47 pts/0 00:00:00 grep --color=auto docker
Я хотел бы создать оболочку bash script, которая проверит, работает ли мой демон docker. Если он работает, ничего не делайте, но если это не так, начнет демон docker.
Мой псевдокод - это что-то вроде этого. Я подумываю разобрать вывод моего ps -ef, но я просто хотел бы знать, есть ли более эффективный способ сделать мой псевдокод.
если (докер не запущен)
run docker
конец
P.S. Я не специалист по Linux, и мне просто нужно сделать эту утилиту в моей собственной среде.
У вас есть утилита под названием pgrep
почти на всех системах Linux.
Вы можете просто сделать:
pgrep -f docker > /dev/null || echo "starting docker"
Замените команду echo
вашей командой запуска докера.
Я сделал немного Script (Mac Osx), чтобы убедиться, что Docker запущен, проверив код выхода docker stats
.
#!/bin/bash
#Open Docker, only if is not running
if (! docker stats --no-stream ); then
# On Mac OS this would be the terminal command to launch Docker
open /Applications/Docker.app
#Wait until Docker daemon is running and has completed initialisation
while (! docker stats --no-stream ); do
# Docker takes a few seconds to initialize
echo "Waiting for Docker to launch..."
sleep 1
done
fi
#Start the Container..
Вы также можете просто проверить наличие/var/run/docker.pid
Следующее работает на macOS и Windows, если установлен git bash. На macOS open /Applications/Docker.app
запускается докер deamon. Однако для Windows ничего подобного не видел.
## check docker is running at all
## based on https://stackoverflow.com/questions/22009364/is-there-a-try-catch-command-in-bash
{
## will throw an error if the docker daemon is not running and jump
## to the next code chunk
docker ps -q
} || {
echo "Docker is not running. Please start docker on your computer"
echo "When docker has finished starting up press [ENTER} to continue"
read
}
Функция может выглядеть так:
isRunning {
`ps -ef | grep "[d]ocker" | awk {'print $2'}`
}
Я создал script, чтобы запустить, остановить, перезапустить mongodb-сервер. Вам нужно только изменить какой-то путь внутри скриптов, и я также буду работать для вас: Script
Я уверен, что вы хотите запустить демон docker, поэтому приведите код для его запуска перед выполнением оператора запуска Docker:
sudo systemctl start docker