第 5 部 数据:容器删了数据还在的本钱


第 5 部 数据:容器删了数据还在的本钱

章节摘要:容器是随时可弃的,数据恰恰相反——数据库记录、上传文件、配置与证书,都比容器金贵。本部把数据相关的命令与选项编成三组词条:volume 命令族(create、ls、inspect、rm、prune)管 Docker 托管的命名卷;-v 与 --mount 的绑定挂载现场管"把宿主机目录递给容器";--tmpfs 管写在内存里、随容器消失的临时数据。三种方式的边界与选型,是本部要交付的核心判断力。

学习目标

阅读完本部,你应当能够:

  1. 说出容器可写层为什么不适合存重要数据(含删除容器即丢失、性能、体积三项理由)。
  2. 用 volume 命令族完成命名卷的创建、查看、引用与批量清理。
  3. 用 -v 与 --mount 两种语法分别完成卷挂载与目录挂载,并说清两者语法的差异。
  4. 判断一个场景该用命名卷、绑定挂载还是 tmpfs,并给出理由。
  5. 用只读挂载(ro)收紧容器对宿主机文件的影响面。
  6. 在开发机上用绑定挂载实现"改代码不重建镜像",并解决权限与事件丢失两类高频坑。
  7. 解释 4.2 的 registry 数据卷与 5.1 的命名卷是同一机制。

核心概念速览

金句:可写层是草稿纸,卷是保险柜,绑定挂载是借宿主机的房子,tmpfs 是沙滩上的字。

子章节导航

5.1 volume 卷命令词条:volume 命令族全套词条与卷的生命周期。重点是卷与容器生死解耦的机制、匿名卷的来路与清理、以及 3.1 的 rm -v 到底删掉了什么。

5.2 bind-mount 挂载现场:-v 与 --mount 的完整义项,绑定挂载在开发热改、配置注入、只读收紧三类场景的现场会话,以及权限映射与文件事件两个高频坑。

5.3 tmpfs 临时存储词条:写在内存里的存储方式。适用场景是密钥、会话与高频中间态,特点是速度极快且随容器消失,与卷的差别不是性能而是"要不要留下"。

子章节之间的逻辑关系

三节按数据"留下的欲望"从强到弱排列:命名卷要传家、绑定挂载要就地、tmpfs 用完即焚。选型判断贯穿始终:

+----------------+ +------------------+ +----------------+ | 5.1 命名卷 | --> | 5.2 绑定挂载 | --> | 5.3 tmpfs | | volume 命令族 | | -v / --mount | | --tmpfs | | 传家数据 | | 开发与配置 | | 用完即焚 | +----------------+ +------------------+ +----------------+ | | | +--- 都是 -v/--mount/--tmpfs 三个选项的词条化展开 ----+ ​

高频疑问

问:镜像自带的目录被挂载盖住后会怎样? 容器路径只能有一种来源:run 时对同一路径下挂载指令,挂载生效后镜像里那份内容在容器内不可见。特例是首次挂命名卷——Docker 会先把镜像目录的既有内容复制进空卷再挂上(5.1 细讲);绑定挂载与 tmpfs 没有这份客气,直接盖。

问:数据真身到底在哪,怎么核实? 命名卷的位置看 volume inspect 的 Mountpoint 字段;绑定挂载就在你给的路径,一分未动;tmpfs 在内存里,容器一停就没了。总账则看容器 inspect 的 Mounts 数组——Type、Source、Destination 三列对完,心里就有底。

问:删容器会不会误删卷? 默认不会。卷的生命周期独立于容器;rm 带 -v 时只顺带清掉匿名卷,命名卷只认 volume rm 与 volume prune(5.1 词条)。传家数据放命名卷的底气正来自这条边界。

前置知识与后续延伸

前置:叁部 3.2 的存储组选项(-v 的最简形态)已露过面,本部是它的完整展开;2.1 的分层概念帮助理解可写层为什么靠不住。延伸:4.2 私有仓库的数据卷正是本部机制的应用实例;柒部 Compose 的 volumes 声明块是本部词条的声明式版本;捌部磁盘治理里的卷清理与本部 prune 词条直接衔接。过关自测:拿到"数据库数据、开发代码目录、验证码会话"三种数据需求,你能立刻各配一种正确的挂载方式,并说出反着配会出什么事。

作者与出处
原作者:灏天文库
来源:平台策划编纂
整理人: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U