如果 Docker 容器正在运行,我希望务实地停止并删除它。这是一个构建脚本。
举个例子。我将如何停止和删除 bash 脚本中 NAMES 列下的 Docker 容器“rabbitmq”?
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9909a5e2856f rabbitmq-image "/docker-entrypoint.s" 11 minutes ago Up 11 minutes 0.0.0.0:5672->5672/tcp, rabbitmq
8990dd1fe503 redis-image "/entrypoint.sh redis" 6 weeks ago Up 4 days 0.0.0.0:32770->6379/tcp redis
etc
以下命令将删除容器并执行我想要做的事情
docker stop rabbitmq && docker rm -f rabbitmq
但是,它将它组合成我想知道的脚本?我认为它看起来像这样。
#!/bin/bash
if [ /*docker ps check some value */ ]; then
docker stop rabbitmq && docker rm -f rabbitmq
fi
原文由 Robbo_UK 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可能已经注意到,
docker stop
以及docker rm
如果容器不存在或未运行,则退出状态码指示失败。这会导致您的构建失败。如果您可以处理构建日志中的错误消息,则可以执行以下小技巧来防止 shell 命令失败:
在 docker 命令之一失败的情况下,
true
被调用,它总是退出并显示成功的状态码。