Docker 入门:用数据卷把容器里的数据留下来

举报
Xavian 发表于 2026/11/04 14:50:11 2026/11/04
【摘要】 刚接触 Docker 的新手常常会遇到一个困惑:容器里明明已经写好了数据、装好了配置,可容器一删,这些东西就全没了。这不是 Docker 出了问题,而是容器的设计本来就是这样:容器层是临时的,删容器就等于把这一层连同里面的改动一起扔掉。想要数据留下来,办法就是数据卷——把容器里的数据,存到容器之外的地方。先理解一个比喻。容器像一间临时办公室,你在里面写的文件都放在办公桌上;人一走、办公室一拆...

刚接触 Docker 的新手常常会遇到一个困惑:容器里明明已经写好了数据、装好了配置,可容器一删,这些东西就全没了。这不是 Docker 出了问题,而是容器的设计本来就是这样:容器层是临时的,删容器就等于把这一层连同里面的改动一起扔掉。想要数据留下来,办法就是数据卷——把容器里的数据,存到容器之外的地方。

先理解一个比喻。容器像一间临时办公室,你在里面写的文件都放在办公桌上;人一走、办公室一拆,桌上的东西自然就没了。数据卷像你随身带的文件柜,办公室可以换,但文件柜一直跟着你。把容器里的目录挂到数据卷上,数据就写进了文件柜,而不是临时办公室,容器删了重建,文件柜还在,数据自然还在。

数据卷有两种常用形态。第一种是具名卷,由 Docker 自己管理,你只要给它起个名字,比如 mydata,Docker 会在自己的存储区里维护它,用起来最省心,适合数据库、缓存这类不需要你直接翻文件的数据。第二种是绑定挂载,把你电脑上一个真实目录直接挂进容器,比如把当前目录下的 data 文件夹挂到容器里的 /app/data,这样你可以在主机上直接看到、编辑、备份这些文件,适合开发调试。两种没有绝对的好坏,省心选具名卷,要看得见、摸得着选绑定挂载。

动手之前先记住三个命令。创建并查看卷用 docker volume create 和 docker volume ls,前者新建一个卷,后者列出本机已有的卷;运行容器时用 -v 把卷挂进去,例如把 mydata 挂到容器里的 /data;清理不再用的卷用 docker volume prune,但这条命令会删掉所有未被使用的卷,执行前一定要确认没有误删重要数据。新手最容易在这里吃亏:随手清理,却发现某个早就不记得的数据库卷也被清掉了。

一个最典型的练习是跑数据库。直接跑数据库容器,往里面写几条数据,然后删掉容器、再用同一个卷重新跑一个同名数据库容器,你会发现数据还在。这一步走通了,数据卷的概念就真正落地了。反过来,如果不挂卷就删容器,数据丢了也不要惊讶,那正是容器临时性的正常表现。做这个练习时建议用测试数据,不要拿真实业务数据练手。

还有三条新手容易踩的坑。第一,挂载路径写错:容器里的路径和主机上的路径左右不要颠倒,写反了数据会写到意想不到的地方。第二,以为挂了卷就万事大吉,却忘了备份:卷只是把数据留在了主机上,主机硬盘坏了、误删了,数据一样会丢,重要数据还是要定期备份到别处。第三,在多个容器之间共享同一个卷时,两个容器同时写同一个文件可能互相覆盖,共享之前先想清楚谁负责写、谁只负责读。

给新手的建议是:从具名卷开始,跑通“删容器、数据还在”这一圈,再去试绑定挂载;每一次删容器前,先用 docker volume ls 确认卷还在;每一次清理前,先想一遍这个卷里有没有还没备份的东西。养成这个习惯之后,容器就不再是“用完就丢”的消耗品,而是一个可以反复重建、数据始终安稳的工作方式。

今天可以练一次:新建一个具名卷,跑一个会写文件的容器,写点内容后删掉容器,再用同一个卷重建,验证文件还在。走完这一圈,“容器删了数据就没了”就不再是困惑,而是一个你已经亲手解决过的问题。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。