Docker 入门系列四:Dockerfile-镜像原理

Docker 镜像原理#

思考(灵魂三问):

  • Docker 镜像本质是什么?
  • Docker 中一个 centos 镜像为什么只有 200MB,而一个 centos 操作系统的 iso 文件要几个 G?
  • Docker 中一个 tomcat 镜像为什么有 500MB,而一个 tomcat 安装包只有 70 多 MB?

操作系统组成部分:

  • 进程调度子系统
  • 进程通信子系统
  • 内存管理子系统
  • 设备管理子系统
  • 文件管理子系统
  • 网络通信子系统
  • 作业控制子系统

Linux 文件系统由 bootfs 和 rootfs 两部分组成

  • bootfs:包含 bootloader(引导加载程序)和 kernel(内核)
  • rootfs:root 文件系统,包含的就是典型 Linux 系统中国呢的 /dev,/proc,/bin,/etc 等标准目录和文件
  • 不同的 linux 发行版,bootfs 基本一样,而 rootfs 不同,如 ubuntu,centos 等

  • Docker 镜像是有特殊的文件系统叠加而成
  • 最底端是 bootfs,并使用宿主机的 bootfs
  • 第二层是 root 文件系统 rootfs,称为 base image
  • 然后在往上可以叠加其他的镜像文件
  • 统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看,只存在一个文件系统。
  • 一个镜像可以放在另一个镜像的上面。位于下面的镜像称为父镜像,最底部的镜像成为基础镜像。
  • 当从一个镜像启动容器是,Docker 会在最顶层加载一个读写文件系统作为部署

实现复用

Docker 入门系列四:Dockerfile

附灵魂三问答案:

  1. Docker 的本质是一个文件系统
  2. Centos 的 iso 镜像文件包含 bootfs 和 rootfs,而 docker 的 centos 镜像服用操作系统的 bootfs,只有 rootfs 和其他镜像层
  3. 由于 docker 中镜像是分层的,tomcat 虽然只有 70 多 MB,但他需要依赖与父镜像和基础镜像,所有整个对外暴露的 tomcat 镜像大小 500 多 MB。
本作品采用《CC 协议》,转载必须注明作者和本文链接