返回
创建于
状态
公开
在使用 docker-compose up 时,默认情况下,即使你从 docker-compose.yml 文件中删除了某个服务,Docker 也不会自动删除已经在运行的旧容器。这些遗留的容器会继续运行或停留在系统中。
若要同步配置文件并移除那些不再定义的容器,你需要使用 --remove-orphans 参数。
核心命令
1docker compose up -d --remove-orphans参数详解
up: 启动并运行服务。-d: 后台运行(Detached mode)。--remove-orphans: 关键参数。它会检查当前项目(Project)中正在运行的容器,如果某个容器对应的服务在当前的docker-compose.yml中找不到,就会将其删除。
其他相关操作
如果你不想立即启动服务,只是想清理掉那些“孤儿”容器,或者想彻底重置,可以参考以下场景:
1. 仅停止并移除不在配置文件中的服务
虽然 up 命令最常用,但有时你可能想先清理:
1# 这种方式通常配合 up 使用,Compose 没有单独的 "remove-orphans" 独立命令2. 彻底清理并重新启动
如果你希望确保环境绝对纯净,可以先停止所有服务并移除:
1docker compose down --remove-orphans
2docker compose up -d3. 为什么会出现“孤儿”容器?
- 修改了服务名称:例如将
db改名为postgres_db,旧的db容器就变成了孤儿。 - 删除了服务定义:直接在 YAML 中删掉了整个
services下的某一项。