容器技术回顾 - 被误解的 Docker 存储驱动
发布网友
发布时间:2024-10-02 14:23
我来回答
共1个回答
热心网友
时间:2024-11-06 05:46
在探讨容器技术时,我们常将Docker存储驱动和存储卷混为一谈,而实际上,它们是两个不同的概念。Docker存储驱动是底层技术,负责管理镜像层和容器层,而存储卷则是用于持久化存储容器中生成的数据。
Docker存储驱动的作用在于将镜像的分层结构与容器文件系统统一,让容器层看起来就像是普通的文件系统。当创建新容器时,实际上是在镜像层上新增一层容器层,所有对容器的修改仅限于这一层。镜像层与容器层之间通过可堆叠的镜像层与copy-on-write技术实现。
容器删除时,容器层的数据将被清除,但数据卷中的数据除外。数据卷是挂载到容器的宿主机目录,接近本地文件系统读写速度,支持多个数据卷挂载同一容器,多个容器共享数据卷。
当前Docker支持的存储驱动包括AUFS、Btrfs、Device mapper、OverlayFS、ZFS和VFS。官方推荐使用现代Linux发行版的内核支持的驱动,例如建议从弃用的devicemapper迁移到性能更好的overlay2。
在后端文件系统方面,Docker的默认目录为/var/lib/docker,某些驱动仅支持特定的文件系统。
存储卷是Docker提供的持久化数据存储机制,相比绑定挂载,它提供了更灵活的管理方式,且不会增加容器大小,内容不受容器生命周期限制。对于非持久状态数据,考虑使用tmpfs挂载以避免永久存储。
创建和管理卷无需受限于容器范围,可以在任何容器之外独立创建和操作。启动容器时,若卷不存在,Docker会自动创建。在示例中,myvol2卷将被安装到容器的/app/目录。
关于Kubernetes中的存储卷,后续文章将进行详细讲解。