一尘不染

停止并删除docker容器(如果正在运行)

docker

我希望实用地停止并删除docker容器(如果正在运行)。这是用于构建脚本的。

请看下面的例子。我将如何停止和删除docker容器“ rabbitmq”,如bash脚本中的NAMES列所示。

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

阅读 739

收藏
2020-06-17

共1个答案

一尘不染

您可能已经注意到,如果容器不存在或未运行docker stop,则docker rm退出并显示状态代码以指示失败。这导致您的构建失败。

如果您可以处理构建日志中的错误消息,则可以执行以下小技巧来防止shell命令失败:

docker stop rabbitmq || true && docker rm rabbitmq || true

如果docker命令之一失败,true则会被调用,该命令始终以指示成功的状态代码退出。

2020-06-17