docker支持的graphdriver
- aufs (ubuntu)
- overlayfs (CoreOS)
- devicemapper (RedHat, CentOS)
graph 镜像的保管者
- json 镜像信息,元数据文件
- layersize 镜像的大小信息
AUFS文件系统another union file system
挂载点:/var/lib/docker/aufs/mnt/@container_id
- 将不同目录挂载到同一虚拟文件系统下
- 实现layer概念
- 没有加入Linux内核
sudo docker info
查看详细信息:storage driver, root dir
ls /var/lib/docker/aufs
diff layers mnt
diff,layers存放镜像信息
mnt存放mount信息
不同的目录挂载到同一虚拟文件系统下。将dir1和dir2挂载到aufs目录下,其中dir1只读,dir2可读写
mount -t aufs -o br=/root/dir1=ro:/root/dir2=rw none /root/aufs
ls /aufs/
umount aufs
查看镜像管理目录graph
cd /var/lib/docker/graph
cat <c_id>/json | python -mjson.tool
Devicemapper文件系统
使用devicemapper作为存储后端,必须分配两个独立的磁盘分区给docker使用,loopback模式会出现故障,避免使用
DOCKER_OPTS="--storage-driver=devicemapper --storage-opt dm.basesize=50G --storage-opt dm.datadev=/dev/sde1 --storage-opt dm.metadev=/dev/sdf1"
Volume
将容器以及容器产生的数据分离开来
Dockerfile: VOLUME $CON_PATH
docker run -v $HOST_PATH:$CON_PATH
容器之间共享:--volumes-from
-v选项:之前是宿主机目录,之后是容器目录
-v dir1:dir2 dir1是宿主机目录,dir2是容器目录
容器中保存在容器目录dir2的数据可以持久保存在dir1中
docker run -it --name data -v /root/dir1:/root busybox sh
docker run -it --name data2 --volumes-from data busybox sh
data容器中的数据已经挂载到了data2的容器里面