为何Docker删除容器时未移除postgres_data卷?如何同时删除?
如何删除容器的同时移除关联的命名卷
为什么docker rm -v没删掉postgres_data卷?
你创建的postgres_data是命名卷(通过--mount type=volume,src=postgres_data显式指定了卷名),而docker rm -v参数仅会自动清理容器关联的匿名卷(无自定义名称、Docker自动生成随机标识的卷)。Docker默认将命名卷视为用户主动创建的持久化存储载体,不会随容器删除而自动清理。
可行解决方案
方案1:分命令删除容器和命名卷
先停止并删除容器,再单独移除对应的命名卷:docker stop db docker rm db docker volume rm postgres_data方案2:使用匿名卷实现自动清理
如果不需要固定卷名,创建容器时省略src参数,让Docker生成匿名卷。此时执行docker rm -v即可在删除容器的同时自动移除关联的匿名卷:# 创建带匿名卷的容器 docker run -p 5432:5432 --name=db -e POSTGRES_PASSWORD=secret -d --mount type=volume,target=/var/lib/postgresql/data postgres # 删除容器及关联匿名卷 docker stop db docker rm -v db方案3:单命令完成容器+命名卷删除
用Shell组合命令实现一步操作:docker stop db && docker rm db && docker volume rm postgres_data
内容的提问来源于stack exchange,提问作者季天成
相关产品推荐
相关产品推荐

