You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash脚本中检查enhanced-app容器运行状态再执行清理?

解决Docker容器清理时的报错问题

你可以通过两种方式实现仅在容器运行时执行清理操作,避免无容器时的报错:

方法1:使用Docker命令的容错参数(推荐)

Docker本身提供了容错参数,无需额外判断逻辑就能简化代码,避免报错:

#!/bin/bash

echo "Stopping and removing enhanced-app..."
# --ignore 参数会忽略不存在/未运行的容器,不会抛出错误(Docker 20.10+支持)
docker container stop --ignore enhanced-app
# -f 参数强制删除容器,不管它是否运行/存在,执行后不会报错
docker container rm -f enhanced-app

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

docker build . -t enhanced-app

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

如果你的Docker版本较低,直接用docker container rm -f enhanced-app就能替代stop+rm两步操作,它会自动先停止运行中的容器再删除,容器不存在时也不会报错。

方法2:先判断容器状态再执行清理

如果需要严格只清理正在运行的容器,可以先通过docker ps检查状态:

#!/bin/bash

# 仅获取运行中、名称匹配enhanced-app的容器ID,无匹配则输出为空
RUNNING_CONTAINER=$(docker ps -q -f name=enhanced-app)

# 当变量非空时,说明有运行的容器,才执行清理
if [ -n "$RUNNING_CONTAINER" ]; then
    echo "Stopping and removing running enhanced-app..."
    docker container stop enhanced-app
    docker container rm enhanced-app
fi

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

docker build . -t enhanced-app

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

内容的提问来源于stack exchange,提问作者Tini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 23:05:27