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

docker compose up是否保证重建变更容器前先删除旧容器?

问题描述

当在项目中两次运行docker compose up时,Compose会检测docker-compose.yml文件的变更,判断是否需要重建现有容器。我需要确保Compose绝不会同时运行同一容器的两个副本——根据我的实验,Compose似乎总是在创建并运行新容器前先销毁旧容器,这正是我需要的行为,但我没找到任何文档说明该操作的语义,也没有找到能保证Compose始终遵循此行为的相关内容。请问是否存在相关规范或文档描述该行为并提供此类保证?

解答

Docker Compose的up命令在处理单实例服务的重建需求时,确实会遵循先销毁旧容器、再创建启动新容器的逻辑,这个行为是稳定且可依赖的,核心依据如下:

  • Docker本身的容器命名约束:同一Docker环境中不允许存在同名容器,而Compose为单实例服务生成的容器名称是固定的(格式为[项目名]_[服务名]_1),这从底层杜绝了同名容器共存的可能。
  • Compose的更新流程逻辑:当检测到服务配置需要重建时,针对单实例服务会串行执行以下步骤:
    • 停止当前运行的旧容器
    • 删除该旧容器
    • 基于更新后的配置创建并启动新容器
  • 若旧容器无法正常停止或删除,Compose会直接报错终止流程,不会强行创建新容器,避免出现新旧容器共存的情况。

虽然官方文档没有将此单独作为一个强保证条目列出,但从Compose“保证运行状态与服务定义一致”的核心设计目标,结合Docker的底层约束来看,这个行为是符合预期且稳定的,可以放心依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:15:46