docker restart $(docker ps -a -f name='^myapp-' -q) 可批量重启名称以 myapp- 开头的所有容器;加 -a 包含已停止容器,去 -a 仅限运行中;执行前建议用 docker ps -a -f name='^myapp-' --format "{{.names}} ({{.status}})" 预览。
直接用 docker restart 配合过滤命令,就能批量重启指定前缀的容器。关键不是“先删再启”,而是精准选出目标容器 id,一次性传给 restart。
用 docker ps -f name= 精准筛选并重启
这是最推荐的方式,原生支持、高效且不易出错:
-
只重启已存在的、名称以
myapp-开头的容器(含运行中和已停止):docker restart $(docker ps -a -f name='^myapp-' -q) -
若只想重启正在运行的(跳过已退出的):
docker restart $(docker ps -f name='^myapp-' -q)(去掉-a即只查运行中) -
执行前预览会操作哪些容器(强烈建议):
docker ps -a -f name='^myapp-' --format "{{.Names}} ({{.Status}})"
兼容旧版 Docker:用 grep + awk 辅助匹配
如果 Docker 版本较老(-f name=,可用文本处理替代:
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
- 列出所有名称以
ci-开头的容器 ID:docker ps -a --format "{{.Names}}\t{{.ID}}" | grep "^ci-" | awk '{print $2}' - 批量重启:
docker ps -a --format "{{.Names}}\t{{.ID}}" | grep "^ci-" | awk '{print $2}' | xargs -r docker restart
封装成函数,提升复用效率
把逻辑写进 ~/.bashrc,以后一行搞定:
- 添加函数:
restart_prefix() { local p="${1:?missing prefix}"; echo "Restarting containers with prefix: $p"; docker restart $(docker ps -a -f name="^$p" -q); } - 使用示例:
source ~/.bashrc && restart_prefix api-→ 重启所有api-xxx容器
注意安全边界
批量操作有风险,务必遵守这两条:
- 永远先用
docker ps -a -f name='^xxx'查看实际匹配结果,确认无误再执行重启 - 避免在生产环境直接用
$(...)嵌套执行;如不确定,加echo预演:docker ps -a -f name='^tmp-' -q | xargs -r echo docker restart










