Docker是一种轻量级容器化技术。Docker在容器运行时会创建一个可写的容器层,也叫容器存储层。Docker存储驱动是指Docker使用哪种技术来管理镜像和存储容器数据。不同的存储驱动采用不同的技术实现Docker镜像和容器的存储管理。下面我们详细介绍一下Docker存储驱动的几种类型。
Device Mapper存储驱动
Device Mapper存储驱动通过使用Linux内核提供的Device Mapper技术实现了Docker的存储管理。Device Mapper是Linux内核提供的一种大小可变的块设备(block device)映射技术,可以将一个块设备映射到另一个块设备或者容器文件系统上。
通过使用Device Mapper存储驱动可以实现存储资源的限制、容器和镜像的快照、镜像层缓存和数据稳定性等功能。但是Device Mapper存储驱动也存在一些缺点,如镜像的下载和上传速度较慢,因为它在Docker镜像层中使用了写时复制;还有就是容器的启动时间较长,因为它要挂载容器文件系统到块设备上。
接下来我们来看一下Device Mapper存储驱动的示例:
首先我们需要创建一个名为test1
的容器:
docker run --name test1 -d ubuntu:18.04 sleep 1000
然后我们使用Device Mapper存储驱动来创建一个名为test2
的容器,并且把test1
的容器文件系统作为test2
的文件系统:
docker run --name test2 --device /dev/mapper/docker-test1 --privileged -it ubuntu:18.04 /bin/bash
这里的--device /dev/mapper/docker-test1
表示使用名为docker-test1
的块设备,也就是之前创建的test1
容器的容器文件系统。
Overlay2存储驱动
Overlay2存储驱动是Docker的默认存储驱动,它使用OverlayFS技术实现存储管理。OverlayFS是Linux内核提供的一种轻量级的联合文件系统(UnionFS)技术,它可以将多个文件系统以只读的方式叠加到一起,并且以只写方式暴露出来。
Overlay2存储驱动优点是快速的镜像下载和上传速度以及快速的容器启动时间。Overlay2存储驱动也支持容器和镜像的快照、镜像层缓存和数据稳定性等功能。
接下来我们来看一下Overlay2存储驱动的示例:
首先我们需要创建一个名为test1
的容器:
docker run --name test1 -d ubuntu:18.04 sleep 1000
然后我们使用Overlay2存储驱动来创建一个名为test2
的容器,并且把test1
的容器文件系统作为test2
的文件系统:
docker run --name test2 --volume /var/lib/docker/overlay2/<test1-container-id>/merged:/mnt --privileged -it ubuntu:18.04 /bin/bash
这里的--volume /var/lib/docker/overlay2/<test1-container-id>/merged:/mnt
表示使用test1
容器的容器文件系统作为test2
的文件系统。
以上就是关于Docker存储驱动的介绍以及两个示例说明,希望对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker 存储驱动详细介绍 - Python技术站