使用 Docker 卷管理数据
了解容器被删除后数据为何会丢失,并学习如何使用 Docker 卷和绑定挂载持久化与共享数据
使用 Docker 卷管理数据 是 CoddyKit 上的免费 Docker & DevOps Fundamentals 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Docker & DevOps Fundamentals 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Docker & DevOps Fundamentals 课程共包含 4 节课。
容器是临时的
容器具有临时性:写入容器的任何内容都存在于容器内部,而删除容器会清除这些数据。对于无状态应用来说这没有问题,但数据库需要让数据持久保存。
可写层
每个容器的镜像之上都有一个薄薄的可写层。写入内容会保存到这一层,但它与容器的生命周期绑定——删除容器后,该层也会消失。
持久化数据的两种方式
Docker 提供两种持久化数据的方式:卷(由 Docker 管理)和绑定挂载(将主机文件夹映射到容器中)。默认情况下,建议使用卷。
创建卷
只需一条命令即可创建一个命名卷:docker volume create。Docker 会决定它在物理存储中的位置,您无需手动处理。
docker volume create app-data挂载卷
使用 -v 和 volumeName:/path/in/container 附加一个卷。现在,写入该路径的所有内容都会持久保存在卷中。
docker run -d -v app-data:/var/lib/data myimage数据在删除后仍然保留
由于卷独立于容器存在,您可以删除容器,再使用同一个卷启动新容器,数据仍会保留。
docker rm -f mycontainer
docker run -d -v app-data:/var/lib/data myimage用于本地开发的绑定挂载
绑定挂载会将主机目录映射到容器中,非常适合开发场景:您在计算机上编辑代码后,修改会立即显示在容器内。
docker run -v /Users/me/project:/app node:20卷与绑定挂载
请根据用途进行选择:生产数据适合使用可移植且由 Docker 管理的卷;开发时如果需要精确指定主机路径并进行完全控制,则适合使用绑定挂载。
检查卷
docker volume ls 会列出您的卷,docker volume inspect 会显示详细信息,包括数据实际存储在磁盘上的位置。
docker volume ls
docker volume inspect app-data在容器之间共享数据
将一个卷挂载到多个容器中,这些容器就可以共享文件——例如,应用容器和备份容器都读取同一份数据。
docker run -v shared:/data writer
docker run -v shared:/data reader清理
未使用的卷会浪费磁盘空间。您可以使用 docker volume rm 删除某个卷,或使用 docker volume prune 清除所有悬空卷——请谨慎操作,因为这会永久删除数据。
docker volume rm app-data
docker volume prune快速检查
测试您对 Docker 数据的理解。
回顾
您已经学会了如何持久化数据:容器是临时的,卷在容器删除后仍会保留,并可使用 -v name:/path 挂载;而绑定挂载适合开发场景。
常见问题解答
「使用 Docker 卷管理数据」课时是免费的吗?
是的 — 「使用 Docker 卷管理数据」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Docker & DevOps Fundamentals 课程的其余内容,请升级到 CoddyKit PRO。 Docker & DevOps Fundamentals 课程共包含 4 节课。
「使用 Docker 卷管理数据」这节课中我会学到什么?
了解容器被删除后数据为何会丢失,并学习如何使用 Docker 卷和绑定挂载持久化与共享数据 你通过在浏览器中直接运行的动手代码来练习 Docker & DevOps Fundamentals,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Docker & DevOps Fundamentals 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Docker & DevOps Fundamentals 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「使用 Docker 卷管理数据」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Docker & DevOps Fundamentals 课中编写并运行代码吗?
能。每节 Docker & DevOps Fundamentals 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 什么是容器
- 安装 Docker Desktop
- 您的第一个 Docker 容器
- 使用 Docker 卷管理数据