为什么选择容器
- 节省资源,轻量级,启动速度快
-
隔离性强
image.png
容器基础
- Container runtime:能够基于在线获取的镜像来创建和运行容器的程序,docker是最熟悉的container runtime
-
docker架构
image.png
Image跟container的关系好比面向对象编程中的类和实例,image是静态定义,container是运行实例
-
容器image
Docker image是一个层级文件系统(unionfs)
一个典型的Linux文件系统由bootfs以及rootfs构成,其中bootfs用于加载Linux kernel,而rootfs包含Linux 系统中的/dev,/proc,/bin,/etc 等标准目录和文件
传统的 Linux 加载 bootfs 时会先将 rootfs 设为 read-only,然后在系统自检之后将 rootfs 从 read-only 改为 read-write,然后我们就可以在 rootfs 上进行读写操作
但 Docker 在 bootfs 自检完毕之后并不会把 rootfs 的 read-only 改为 read-write,而是利用union mount技术将 image 中的其他的 layer 加载到之前的 read-only 的 rootfs 层之上,每一层 layer 都是 rootfs 的结构,并且是read-only 的
所以,我们是无法修改一个已有镜像里面的 layer 的!只有当我们创建一个容器,也就是将 Docker 镜像进行实例化,系统会分配一层空的 read-write 的 rootfs ,用于保存我们做的修改
image.png
网友评论