Docker的镜像从面向对象的角度上看,更类似于class,而容器则是通过它创建的对象
Docker生态圈存在大量的镜像仓库,当然最知名的还是 https://hub.docker.com/
我们知道 docker image 是分层的,例如以下Nginx镜像
我们在 Docker和虚拟机的区别 中提到过,容器会覆盖掉Linux宿主机的rootfs层
从而在宿主机之上构建出虚拟的 Ubuntu、CentOS、Busybox、CoreOS 等环境
其中使用的原理是 copy-on-write,
容器层叫做可写层,容器层之下都叫做镜像层
所有对容器的改动,无论添加、读写还是删除,都只会发生在容器层中,只有容器层是可写的,容器层之下的镜像层都是只读的
- 写入、删除操作时,直接在容器层进行操作
- 读取操作时,docker会从上至下一次查找此文件,一旦找到就直接读取