我是码头工人的新手。我正在为docker编写一个简单的脚本。我需要检查docker是否正在运行。是否有命令检查容器名称
答案 0 :(得分:40)
如果您要查找特定容器,可以运行:
docker inspect -f '{{.State.Running}}' $container_name
如果您想知道dockerd是否在本地计算机上运行并且您安装了systemd,则可以运行:
systemctl show --property ActiveState docker
您还可以使用docker info
或docker version
连接到泊坞窗,如果守护程序不可用,它们将会出错。
答案 1 :(得分:10)
有时您不知道完整的容器名称,在这种情况下,这对我有用:
if docker ps | grep -q keyword
then
echo "Running!"
else
echo "Not running!"
exit 1
fi
我们列出所有正在运行的容器进程(docker ps -a
也会向我们展示未运行的容器进程,但这不是我所需要的),我们搜索一个特定的单词(grep
部分),如果我们没有找到至少一个名称包含我们关键字的正在运行的容器。
答案 2 :(得分:9)
您可以使用:systemctl is-active docker
➜ ~ systemctl is-active docker
active
您可以将其用作:
➜ ~ if [ `systemctl is-active docker` = "active" ]; then echo "is alive :)" ; fi
is alive :)
➜ ~ sudo systemctl stop docker
➜ ~ if [ `systemctl is-active docker` = "active" ]; then echo "is alive :)" ; fi
* empty response *
答案 3 :(得分:6)
列出所有容器:
docker container ls -a
ls = list
-a =全部
检查列"状态"
答案 4 :(得分:6)
我最终使用了
Downloading binary from https://github.com/sass/node-
sass/releases/download/v4.11.0/win32-x64-64_binding.node
Cannot download "https://github.com/sass/node-
sass/releases/download/v4.11.0/win32-x64-64_binding.node":
tunneling socket could not be established, cause=socket hang up
Hint: If github.com is not accessible in your location
try setting a proxy via HTTP_PROXY, e.g.
export HTTP_PROXY=http://example.com:1234
or configure npm proxy via
npm config set proxy http://example.com:8080
使用bash脚本检查docker引擎是否正在运行。
答案 5 :(得分:5)
对于第一个问题的答案,请参阅此答案 - https://stackoverflow.com/a/65447848/4691279
对于您的第二个问题 - 您可以使用 docker ps --filter "name=<<<YOUR_CONTAINER_NAME>>>"
之类的命令来检查特定容器是否正在运行。
如果 Docker 和 Container 都在运行,那么您将得到如下输出:
$ docker ps --filter "name=nostalgic_stallman"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9b6247364a03 busybox "top" 2 minutes ago Up 2 minutes nostalgic_stallman
如果 Docker 未运行,您将收到一条错误消息,指出 docker 守护程序未运行。
如果 Docker 正在运行但 Container 没有运行,那么您将不会在此命令的输出中获得容器名称。
答案 6 :(得分:4)
容器状态:真/假
# docker inspect --format '{{json .State.Running}}' container-name
true
#
答案 7 :(得分:3)
任何泊坞窗命令(docker -v
除外),例如docker ps
如果Docker正在运行,您将获得一些有效的响应,否则您将收到包含&#34;您的docker守护程序是否正常运行的消息?&#34;
您还可以检查您的任务管理器。
答案 8 :(得分:2)
您可以使用此命令systemctl status docker
进行检查,它将显示泊坞窗的状态。如果要开始使用,可以使用systemctl start docker
代替systemctl
,也可以分别使用service
,service docker status
和service docker start
。
答案 9 :(得分:2)
对于OS X用户(Mojave 10.14.3)
这是我在Bash脚本中用来测试Docker是否正在运行的
# Check if docker is running
docker_state=$(docker info >/dev/null 2>&1)
if [[ $? -ne 0 ]]; then
echo "Docker does not seem to be running, run it first and retry"
exit 1
fi
答案 10 :(得分:2)
在终端中运行以下命令:
docker ps
如果docker没有运行,您将收到以下消息:
来自守护程序的错误响应:拨打unix docker.raw.sock:connect:连接被拒绝
答案 11 :(得分:2)
docker ps -a
您可以看到所有泊坞窗容器,无论它是活的还是死的。
答案 12 :(得分:1)
我有一个在 Gitea 容器上下文中使用上述一些工作的更充实的示例,但它可以根据名称轻松转换为另一个容器。此外,您可能可以使用 docker ps --filter
功能在较新的系统或没有使用 docker-compose 的系统中设置 $GITEA_CONTAINER。
# Set to name or ID of the container to be watched.
GITEA_CONTAINER=$(./bin/docker-compose ps |grep git|cut -f1 -d' ')
# Set timeout to the number of seconds you are willing to wait.
timeout=500; counter=0
# This first echo is important for keeping the output clean and not overwriting the previous line of output.
echo "Waiting for $GITEA_CONTAINER to be ready (${counter}/${timeout})"
#This says that until docker inspect reports the container is in a running state, keep looping.
until [[ $(docker inspect --format '{{json .State.Running}}' $GITEA_CONTAINER) == true ]]; do
# If we've reached the timeout period, report that and exit to prevent running an infinite loop.
if [[ $timeout -lt $counter ]]; then
echo "ERROR: Timed out waiting for $GITEA_CONTAINER to come up."
exit 1
fi
# Every 5 seconds update the status
if (( $counter % 5 == 0 )); then
echo -e "\e[1A\e[KWaiting for $GITEA_CONTAINER to be ready (${counter}/${timeout})"
fi
# Wait a second and increment the counter
sleep 1s
((counter++))
done
答案 13 :(得分:1)
运行:
docker version
如果docker 正在运行,您将看到:
Client: Docker Engine - Community
Version: ...
[omitted]
Server: Docker Engine - Community
Engine:
Version: ...
[omitted]
如果docker 未运行,您将看到:
Client: Docker Engine - Community
Version: ...
[omitted]
Error response from daemon: Bad response from Docker engine
答案 14 :(得分:1)
答案 15 :(得分:0)
我如何签入SSH。运行:
systemctl
如果响应:无法建立D-Bus连接:不允许操作
它是docker或WSL容器。
答案 16 :(得分:0)
如果基本目标是“如何在Docker启动时启动容器?”
我们可以使用Docker的restart policy
要将重新启动策略添加到现有容器,请执行以下操作:
Docker: Add a restart policy to a container that was already created
示例:
fs.readFile('./calc.html', function(error, data){
if(error){
//do nothing for now
} else if (data){
resp.writeHead(200, {'Content-Type':'text/html'});
var sum = 9;
resp.write(sum);
resp.end(data);
}
});
答案 17 :(得分:0)
您还可以使用以下命令检查特定的Docker容器是否正在运行:
docker inspect postgres | grep "Running"
此命令将检查例如我的postgres容器是否正在运行,并以“ Running”:true
的形式返回输出希望这会有所帮助。