4
0

docker compose up -d --build和 docker compose down & docker compose up -d 区别

2025-09-24
2026-09-07

两者的最终效果都能让容器“重新运行”,但过程和适用场景不同,尤其是在是否重新构建镜像和是否删除已有容器这两点上差别明显:


1️⃣ docker compose up -d --build

  • 作用: 先检查镜像是否需要重建。 如果 Dockerfile 或构建上下文的文件有变化,会执行 docker build 重新构建镜像。 如果镜像没变,就直接使用现有镜像。 启动容器: 如果容器已经存在,会尝试复用容器并更新配置(相当于“替换”)。 会对比 docker-compose.yml 是否有变化,如果有差异则重新创建容器,否则直接复用。
  • 不会删除旧容器网络卷,除非有配置变化导致必须重建。
  • 常用场景: 修改了代码或 Dockerfile,需要重新打包镜像并更新容器。 只是想“热更新”而不想中断数据卷或网络。

2️⃣ docker compose down && docker compose up -d

这是两条命令的组合,效果可以拆开理解:

  • docker compose down 停止并删除容器、默认网络、匿名卷(不带 --volumes 时不会删除命名卷)。 镜像不会被删除。
  • docker compose up -d 使用现有镜像直接创建全新的容器。 不会自动重新构建镜像,除非本地镜像不存在。 因为 down 删除了容器,所有容器都会是“全新”的(网络、匿名卷会重建)。
  • 常用场景: 想要彻底“干净”地重启环境(容器状态、网络、匿名卷全部清除)。 配置文件或依赖关系大改,需要全新容器网络环境。 排查因为容器残留导致的问题。

🔑 核心差异对比

特性 up -d --build down && up -d
镜像构建 重新构建(若有变化) 不会重建镜像
容器重建 只在配置或镜像变化时重建,否则复用 直接删除旧容器再新建
数据卷 命名卷保留 命名卷保留;匿名卷会被删除
网络 保留并复用 默认网络会被删除并重建
停机时间 容器重建时有短暂停机 down 到 up 期间完全停机
适合 代码/镜像更新 环境彻底重启、清理残留

🏁 简单总结

  • 快速更新镜像和容器 → docker compose up -d --build 改了 Dockerfile 或代码时用它最方便。
  • 彻底清理后重建 → docker compose down && docker compose up -d 网络/容器有脏数据或需要干净环境时用它。

如果你的需求是仅重新构建镜像并重启容器:

👉 推荐 docker compose up -d --build

如果需要彻底清理所有容器与网络,再重新部署:

👉 推荐 docker compose down && docker compose up -d

docker compose up -d --build和 docker compose down & docker compose up -d 区别
/archives/008-docker-compose-up-d-buildhe-docker-compose-down---docker-compose-up-d-qu-bie
作者
Administrator
发布于
2025-09-24
许可协议
CC BY-NC-SA 4.0

评论