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

如何一次性重建所有运行中的Docker容器?日志驱动更新配置生效需求

批量重建多目录下的Docker Compose容器方案

修改Docker日志驱动后,需重建容器才能让配置生效。针对分散在多个目录的应用,无需逐个手动进入目录执行命令,可通过以下几种方案批量操作:

方案1:一次性Shell循环执行

直接在终端运行以下命令,遍历所有目标目录并执行容器重建操作:

for dir in /home/docker/folder1 /home/docker/folder2 /home/docker/folder3; do
  cd "$dir" && /usr/local/bin/docker-compose down && /usr/local/bin/docker-compose up -d
done

该命令会依次进入每个指定目录,先停止并移除容器,再后台启动新容器,确保每个目录的docker-compose.yml被正确加载。

方案2:通配符匹配目录(适用于目录命名有规律的场景)

如果目标目录命名有统一前缀(比如都是folder开头),可以用通配符简化目录列表,同时增加目录存在性检查避免出错:

for dir in /home/docker/folder*; do
  [ -d "$dir" ] && cd "$dir" && /usr/local/bin/docker-compose down && /usr/local/bin/docker-compose up -d
done

方案3:编写Shell脚本复用

若后续需要重复执行该操作,可创建一个可复用的脚本文件:

  1. 创建脚本文件rebuild_containers.sh:
#!/bin/bash

# 定义需要处理的目录列表
target_dirs=(
  "/home/docker/folder1"
  "/home/docker/folder2"
  "/home/docker/folder3"
)

for dir in "${target_dirs[@]}"; do
  if [ -d "$dir" ]; then
    echo "开始处理目录: $dir"
    # 进入目录失败则跳过当前目录
    cd "$dir" || { echo "无法进入目录 $dir,跳过"; continue; }
    /usr/local/bin/docker-compose down
    /usr/local/bin/docker-compose up -d
    echo "目录 $dir 处理完成"
  else
    echo "警告:目录 $dir 不存在,已跳过"
  fi
done
  1. 给脚本添加执行权限:
chmod +x rebuild_containers.sh
  1. 执行脚本:
./rebuild_containers.sh

补充说明

你之前直接执行/usr/local/bin/docker-compose down报错,原因是docker-compose默认会在当前工作目录查找docker-compose.yml或docker-compose.yaml文件,若当前目录没有对应配置文件,就会触发找不到配置的错误。上述方案通过进入目标目录,解决了这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:20:38