思考
- Docker 镜像的本质是什么?
- Docker 中一个centos镜像为什么只有200M,而一个centos操作系统的iso文件要几个G
- Docker 中一个tomcat镜像为什么有500M,而一个tomcat 安装包只有70M多?
操作系统组成部分
- 进程调度子系统
- 进程通信子系统
- 内存管理子系统
- 设备管理子系统
- 文件管理子系统
- 网络通信子系统
- 作业控制子系统
文件管理子系统
- bootfs:包含bootloader (引导加载程序) 和 kernel (内核)
- rootfs: root文件系统,包含的就是典型Linux系统中的/dev,/proc,/bin,/etc等标准目录和文件。 不同的Linux发行版,bootfs基本一样,而rootfs不同,
Docker 镜像原理
- Docker镜像是由特殊文件系统叠加而成
- 最底端是 bootfs,并使用宿主机的bootfs
- 第二层是root文件系统 rootfs称为base image ,然后在往上叠加其他镜像。
统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。
当一个镜像启动容器的时候,Docker会在最顶层加载一个读写文件系统作为容器
操作验证
## 容器里可以写
docker run --name my_nginx -d -p 80:80 nginx
docker exec -it my_nginx /bin/bash
cat usr/share/nginx/html/index.html
echo "6666" > usr/share/nginx/html/index.html
## commit 制作新的镜像
docker commit 978c8c89b70f my_nginx_image
## 运行该镜像
docker run --name my_nginx_666 -d -p 80:80 my_nginx_image