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

推荐阅读更多精彩内容

  • 前言 上一篇文章中简单总结了一下docke的基础使用方法,这次我来总结一下有关docker存储方面的相关知识。本文...
    魏守峰阅读 2,060评论 0 7
  • 一、Docker 简介 Docker 两个主要部件:Docker: 开源的容器虚拟化平台Docker Hub: 用...
    R_X阅读 2,125评论 0 19
  • devicemapper驱动将每一个 Docker镜像 和容器存储在它自身的具有精简置备(thin-provisi...
    jianweixs阅读 1,367评论 0 0
  • 我自他乡涉水千里方至,为了再次遇见你。 远远的望见你。隔着人潮冲你挥手。 “嗨,你的女朋友真好看。” 而你却连看我...
    是西早不是山今阅读 57评论 0 0
  • 心里空荡荡的,想去这里看看再去那里看看,去完回来,心里还是空荡荡的,这时,我就知道,其实我需要的不是一次旅行,只是...
    泥旦旦阅读 48评论 0 2