Docker 容器管理
docker 镜像系统简介
Docker 镜像含有启动容器所需要的文件系统及其内容, 因此, 其用于创建并启动 docker 容器.
Docker 采用分层构建机制, 最底层为 bootfs , 其之为 rootfs.
- Bootfs: 用于系统引导的文件系统, 包括 bootloader 和 kernel ,容器启动完成后会被卸载以解决内存资源.
- Rootfs: 位于 bootfs 之上, 表现为 docker 容器的根文件系统.
传统模式中,系统启动之时, 内核挂载 rootfs 时会首先将其挂载为 "只读" 模式, 完整性自检完成后将其重新挂载为只读模式.
Docker 中, rootfs 有内核挂载为 "只读模式" ,而后通过 "联合挂载" 技术额外挂载一个 "可写" 层.
Docker Image Layer
位于下层的镜像称为父镜像(parent image), 最底层的称为基础镜像(base image)
最上层为 "可写层",以下均为 "只读" 层.
Docker Registry
启动容器时, docker daemon 会试图从本地获取相关的镜像, 本地镜像不存在时, 其将从 Registry 中下载镜像并保存到本地.
Docker Registry 分类:
Registry 用于保存 docker 镜像, 包括镜像的层次结构和元数据.用户可自建 Registry, 也可以使用官方的 Docker Hub
- Sponsor Registry: 第三方的 Registry, 供客户和 Docker 社区使用.
- Mirror Registry: 第三方的 Registry, 只让客户使用.
- Vendor Registry: 由 Docker 镜像的供应商提供的 Registry.
- Private Registry: 通过设有防火墙和额外安全层的私有实体提供的 Registry.
Docker 采用的分层文件系统
OvrlayFs 是目前使用比较广泛的层次文件系统, 他是类似 Aufs 的一种堆叠文件系统, 与 2014 年正式合入 Linux 3.18 主线内核.
OverlayFS文件系统,实现简单,而且性能很好,可以充分利用不同或则相同Overlay文件系统的Page Cache,具有:上下合并、同名遮盖、写时拷贝等特点。
Docker虚拟化Overlay存储驱动利用了很多OverlayFS特性来构建和管理镜像与容器的磁盘结构。 从Docker1.12起,Docker也支持Overlay2存储驱动,相比于Overlay来说,Overlay2在inode优化上更加高效。但Overlay2驱动只兼容Linux kernel 4.0+以上的版本。
OverlayFS加入Linux Kernel主线后,在Linux Kernel模块中的名称从Overlayfs改名为Overlay。在真实使用中,OverlayFS代表整个文件系统,而Overlay/Overlay2表示Docker的存储驱动。