web-dev-qa-db-ja.com

dockerデーモンが実行されているかどうかを確認する方法は?

ドッカーデーモンがサーバーで実行されているかどうかを確認する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の専門家ではなく、自分の環境でこのユーティリティを実行するだけです。

19
Mark Estrada

ほとんどすべてのLinuxシステムにpgrepというユーティリティがあります。

あなたはただすることができます:

pgrep -f docker > /dev/null || echo "starting docker"

echoコマンドをdocker startingコマンドに置き換えます。

9
anubhava

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..
7
madsonic

/var/run/docker.pidの存在を確認することもできます

3
Raman Sailopal

以下は、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
}
1
Vincent

関数は次のようになります。

isRunning {
    `ps -ef | grep "[d]ocker" | awk {'print $2'}`
}

Mongodb-serverを起動、停止、再起動するスクリプトを作成しました。スクリプト内のいくつかのパスを変更するだけでよく、私もあなたのために働きます: Script

0