本文目录导读:

是的,脚本可以自动停止Docker容器,以下是几种常见的实现方式:
基础停止脚本
停止指定容器
#!/bin/bash # stop_container.sh docker stop <容器名称或ID>
停止所有运行中的容器
#!/bin/bash # stop_all_containers.sh docker stop $(docker ps -q)
更实用的脚本示例
带状态检查的停止脚本
#!/bin/bash
CONTAINER_NAME="my-app"
# 检查容器是否存在并运行
if docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
echo "正在停止容器: ${CONTAINER_NAME}"
docker stop ${CONTAINER_NAME}
echo "容器已停止"
else
echo "容器 ${CONTAINER_NAME} 未运行或不存在"
fi
批量停止带特定标签的容器
#!/bin/bash
# 停止所有带指定标签的容器
LABEL="env=production"
echo "正在查找带标签 ${LABEL} 的运行容器..."
CONTAINERS=$(docker ps --filter "label=${LABEL}" -q)
if [ -n "$CONTAINERS" ]; then
echo "找到以下容器,正在停止..."
docker stop $CONTAINERS
echo "所有匹配的容器已停止"
else
echo "没有找到匹配的运行容器"
fi
自动化场景示例
定时停止脚本(配合cron)
#!/bin/bash # 在每天凌晨2点停止特定容器 LOG_FILE="/var/log/docker_auto_stop.log" echo "$(date) - 开始自动停止任务" >> $LOG_FILE # 停止开发环境容器 docker stop dev-app dev-db 2>> $LOG_FILE echo "$(date) - 任务完成" >> $LOG_FILE
设置cron定时任务:
# 每天凌晨2点执行 0 2 * * * /path/to/auto_stop.sh
基于资源使用的自动停止
#!/bin/bash
CPU_THRESHOLD=90
MEMORY_THRESHOLD=90
docker stats --no-stream --format "{{.Name}} {{.CPUPerc}} {{.MemPerc}}" | \
while read -r line; do
NAME=$(echo $line | awk '{print $1}')
CPU=$(echo $line | awk '{print $2}' | sed 's/%//')
MEM=$(echo $line | awk '{print $3}' | sed 's/%//')
if (( $(echo "$CPU > $CPU_THRESHOLD" | bc -l) )) || \
(( $(echo "$MEM > $MEMORY_THRESHOLD" | bc -l) )); then
echo "容器 ${NAME} 资源使用过高 (CPU: ${CPU}%, MEM: ${MEM}%)"
docker stop $NAME
fi
done
使用Docker Compose
#!/bin/bash # 停止docker-compose管理的所有服务 cd /path/to/docker-compose-project docker-compose down # 或者只停止不删除 # docker-compose stop
高级示例:带通知的停止脚本
#!/bin/bash
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/xxx"
DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/xxx"
stop_and_notify() {
local container=$1
if docker stop $container 2>/dev/null; then
MESSAGE="✅ 容器 ${container} 已成功停止于 $(date)"
# 发送通知(可选)
# curl -X POST -H 'Content-type: application/json' \
# --data "{\"text\":\"${MESSAGE}\"}" \
# $SLACK_WEBHOOK_URL
echo $MESSAGE
else
echo "❌ 容器 ${container} 停止失败"
fi
}
# 使用示例
stop_and_notify "my-app"
使用建议
- 添加错误处理:使用
set -e或检查命令返回值 - 日志记录:记录操作时间戳和结果
- 权限管理:确保脚本有执行权限
chmod +x script.sh - 测试环境:先在测试环境验证脚本
- 使用绝对路径:在脚本中使用
docker的绝对路径/usr/bin/docker
这样你就可以根据实际需求创建自动停止Docker容器的脚本了。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播