--- title: "如何删除旧的废弃的 Docker Container + Volume" type: source tags: [docker, container, portainer, volume] date: 2026-04-26 --- ## Source File - [[raw/Home Office/如何删除旧的废弃的docker container +volume.md]] ## Summary(用中文描述) - 核心主题:清理 Docker 环境中废弃的 Portainer 容器、Volume 和 Network 的完整操作流程 - 问题域:Docker 容器残留导致的端口冲突、卷数据残留、以及重启 Portainer 时出现的 WARN 警告 - 方法/机制:通过 `docker stop/rm`、`docker volume ls/rm`、`docker network ls/rm` 系列命令手动清理;使用 `docker compose down` 一键清理整个 compose 项目;通过 `external: true` 配置避免 future 部署时的资源冲突 - 结论/价值:提供了从手动单步清理到一键重装的完整操作链,以及 WARN 原因分析和解决方案 ## Key Claims(用中文描述) - `docker compose down` 命令可同时删除容器、网络和匿名 Volume,但保留命名 Volume - `docker volume rm` 可显式删除指定 Volume(如 `portainer_data`),从而清除 Portainer 所有用户数据和配置 - Docker WARN "Network already exists" 表示同名 network 由另一个 compose 项目创建,与当前项目冲突 - Docker WARN "Volume is used by another service" 表示同名 volume 属于另一个 compose 项目的不同 project name - 在 compose 文件中设置 `external: true` 可让新项目复用旧 network/volume 而不触发冲突警告 ## Key Quotes > "⚠️ 注意:这会删除 Portainer 所有数据(用户、配置)。如果你想保留数据,不要删 volume,只需要在 compose 文件里加:`external: true`" — 删除 portainer_data 的重要提示 ## Key Concepts - [[Docker Container]]:Docker 镜像的运行实例,`docker ps -a` 查看所有容器,`docker rm` 删除已停止容器,`docker rm -f` 强制删除运行中容器 - [[Docker Volume]]:持久化存储机制,挂载到容器内部用于保存数据;`docker volume ls` 列出所有卷,`docker volume rm` 删除指定卷 - [[Docker Network]]:容器间通信的虚拟网络;同名 network 冲突是 compose 项目隔离机制导致的警告 - [[Docker Compose]]:`docker compose down` 停止并删除整个 compose 项目中的容器、网络,以及(非 external 的)命名卷 - [[Docker Socket]]:Docker 守护进程的 Unix Socket(通常为 `/var/run/docker.sock`),Portainer 通过挂载它实现对本地 Docker 的管理 ## Key Entities - [[Portainer]]:开源 Docker 容器管理面板,本文档的清理目标;`portainer/portainer-ce` 为其 Community Edition 镜像 - [[portainer_data]]:Portainer 的命名 Docker Volume,存储用户、配置等持久化数据 ## Connections - [[用Docker安装Portainer]] ← depends_on ← [[如何删除旧的废弃的 Docker Container + Volume]] - [[如何在Ubuntu Server安装 Docker & Docker Compose]] ← related_to ← [[如何删除旧的废弃的 Docker Container + Volume]] ## Contradictions - 无已知冲突 ## 完整操作流程速查 ```bash # 最干净的重装流程 docker stop portainer && docker rm portainer docker volume rm portainer_data docker network rm portainer_network docker compose up -d ``` ```bash # 一键清理(compose 部署) docker compose down # 删除容器+网络+匿名卷 docker compose down -v # 额外删除命名卷(谨慎!) ```