shell 在通过脚本移除或删除docker container之前,请检查它是否正在运行

pieyvz9o  于 2023-02-16  发布在  Shell
关注(0)|答案(2)|浏览(134)

我有一个bash脚本部署了一个名为enhanced-app的应用程序,它应该在构建新映像之前先清理所有正在运行的容器,我目前的代码就是这样做的,但是如果容器不存在或者没有运行,我就会得到一个错误。
我只想在enhanced-app正在运行时才运行cleanup命令。请问如何实现这一点?

!/bin/bash

echo "Stopping App2..."
docker container stop enhanced-app
docker container rm enhanced-app

CURPATH=$(dirname "${BASH_SOURCE[0]}")

docker build . -t enhanced-app

docker run -d -p 5000:5000 --name  enhanced-app enhanced-app
6yt4nkrj

6yt4nkrj1#

我相信您可以使用docker ps的输出来实现这一点:

#!/bin/bash

IS_RUNNING=$(docker ps --filter name=enhanced-app --format '{{.ID}}')
if [ -n "${IS_RUNNING}" ]; then
    echo "enhanced-app is running. Stopping App2 and removing container..."
    docker container stop enhanced-app
    docker container rm enhanced-app
else
    IS_STOPPED=$(docker ps -a --filter name=enhanced-app --format '{{.ID}}')
    if [ -n "${IS_STOPPED}" ]; then
        echo "enhanced-app is stopped. Removing container..."
        docker container rm enhanced-app
    else
fi

CURPATH=$(dirname "${BASH_SOURCE[0]}")

docker build . -t enhanced-app

docker run -d -p 5000:5000 --name  enhanced-app enhanced-app
kpbpu008

kpbpu0082#

您可以使用docker container inspect的退出状态

if docker inspect -f 'Container exists and is {{.State.Status}}' enhanced-app; then
  docker container stop enhanced-app
  docker container rm enhanced-app
fi

相关问题