ドッカーデーモンがサーバーで実行されているかどうかを確認するbashユーティリティスクリプトを作成しようとしています。このようなコードを実行する以外に、サーバーで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
Dockerデーモンが実行されているかどうかを確認するbashシェルスクリプトを作成したいと思います。実行中の場合は何もせず、実行中の場合はdockerデーモンを起動します。
私の擬似コードはこのようなものです。 ps -efの出力を解析することを考えていますが、擬似コードを実行するより効率的な方法があるかどうかを知りたいだけです。
if(dockerが実行されていません)
run docker
終わり
追伸私はLinuxの専門家ではなく、自分の環境でこのユーティリティを実行するだけです。
ほとんどすべてのLinuxシステムにpgrep
というユーティリティがあります。
あなたはただすることができます:
pgrep -f docker > /dev/null || echo "starting docker"
echo
コマンドをdocker startingコマンドに置き換えます。
docker stats
の終了コードを確認して、Dockerが確実に実行されるように、小さなスクリプト(Mac Osx)を作成しました。
#!/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の存在を確認することもできます
以下は、git bashがインストールされている場合、macOSおよびWindowsで動作します。 macOS open /Applications/Docker.app
は、Dockerデーモンを開始します。ただし、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'}`
}
Mongodb-serverを起動、停止、再起動するスクリプトを作成しました。スクリプト内のいくつかのパスを変更するだけでよく、私もあなたのために働きます: Script