Docker存储

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 /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的容器里面

你可能感兴趣的:(Docker存储)