Mar*_*ada 21 bash shell docker
我正在尝试创建一个bash实用程序脚本来检查我的服务器中是否正在运行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
Run Code Online (Sandbox Code Playgroud)
我想创建一个bash shell脚本来检查我的docker守护进程是否正在运行.如果它正在运行,那么什么也不做,但如果不是,则启动docker守护程序.
我的伪代码是这样的.我正在考虑解析我的ps -ef的输出,但我只是想知道是否有更有效的方法来做我的伪代码.
if(docker没有运行)
Run Code Online (Sandbox Code Playgroud)run docker
结束
PS我不是linux专家,我只需要在我自己的环境中做这个实用程序.
Gon*_*ora 23
if curl -s --unix-socket /var/run/docker.sock http/_ping 2>&1 >/dev/null
then
echo "Running"
else
echo "Not running"
fi
Run Code Online (Sandbox Code Playgroud)
小智 11
我编写了一个小脚本(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..
Run Code Online (Sandbox Code Playgroud)
anu*_*ava 10
pgrep
几乎所有的Linux系统都有一个实用工具.
你可以这样做:
pgrep -f docker > /dev/null || echo "starting docker"
Run Code Online (Sandbox Code Playgroud)
用echo
docker starting命令替换该命令.
您可以简单地:
docker version > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
该命令的退出代码将被存储,$?
以便您可以检查它是否为0
,然后 docker 正在运行。
docker version
exit 1
如果守护进程没有运行,则会。如果遇到其他问题,例如根本没有安装 docker,退出代码将会有所不同。
但最终,如果安装了 docker 并且守护进程正在运行,退出代码将为 0。
无论执行结果如何,都会2>&1
重定向stderr
到stdout
并> /dev/null
会重定向stdout
到实际上静默输出。/dev/null
The following works on macOS and on Windows if git bash is installed. On macOS open /Applications/Docker.app
would start the docker deamon. Haven't seen anything similar for Windows however.
## check docker is running at all
## based on /sf/ask/1540655511/
{
## 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
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26781 次 |
最近记录: |