Docker存储技术浅析
Docker在Linux上支持很多存储驱动,每种驱动都有自己的镜像分层、镜像层共享以及写时复制(CoW)技术的具体实现。 Docker存储基础技术 镜像分层 所有的Docker镜像都起始于一个基础镜像层,当进行修改或增加新的内容时,就会在当前镜像层之上,创建新的镜像层。默认Docker镜像由多个只读层镜像叠加而成,启动容器后,Docker会加载只读镜像层,并再顶部添加一个读写层,并通过写时复制的方式,来写读写层 镜像层共享 多个镜像之间可以并且确实会共享镜像层,这样可以有效节省空间 并提升性能。例如多个centos7的镜像可以共享centos7的基础image,因为基础image大家都一样 写时复制CoW CoW就是copy-on-write,表示只在需要写时才去复制,这个是针对已有文件的修改场景。比如基于一个image启动多个Container,如果为每个Container都去分配一个image一样的文件系统,那么将会占用大量的磁盘空间。而CoW技术可以让所有的容器共享image的文件系统,所有数据都从image中读取,只有当要对文件进行写操作时,才从image里把要写的文件复制到自己的文件系统进行修改。所以无论有多少个容器共享同一个image,所做的写操作都是对从image中复制到自己的文件系统中的复本上进行,并不会修改image的源文件,且多个容器操作同一个文件