Union File System
Union File System是一种为linux FressBSD和NetBSD操作系统,把其他文件系统联合到一个联合挂载点的文件系统服务。
AUSF 时Docker选用的第一种驱动。AUFS具有快速启动容器、高效利用存储和内存的优点,直到现在AUFS仍是Docker支持的一种存储驱动类型。接下来,介绍一下Docker是如何利用AUFS存储image和container的。
手动实现AUFS
- 建一个文件夹名为aufs
- 在aufs下创建文件夹mnt作为挂载点
- 在aufs下创建container-layer文件夹,创建container-layer.txt 内容为"I am container layer"
- 在aufs下创建四个文件夹分别为 image-layer1 image-layer2 image-layer3 image-layer4
- 在上一条的四个文件夹内分别写四个文件,分别为image-layer1.txt ... 内容分别为 "I am image layer 1"...
- 把建container-layer和4个image-layer用aufse的方式挂载到mnt(默认情况下 dirs 指定的左边第一个目录是read-write权限,其他的都是read-only)
maojiancai@bogon:~/mygo/aufs$ tree
.
├── container-layer
│ └── container-layer.txt
├── image-layer1
│ └── imagge-layer1.txt
├── image-layer2
│ └── image-layer2.txt
├── image-layer3
│ └── image-layer3.txt
├── image-layer4
│ └── image-layer4.txt
└── mnt
6 directories, 5 files
挂载
sudo mount -t aufs -o dirs=./container-layer:./image-layer4:./image-layer3:./image-layer2:./image-layer1 none ./mnt
.
├── container-layer
│ └── container-layer.txt
├── image-layer1
│ └── imagge-layer1.txt
├── image-layer2
│ └── image-layer2.txt
├── image-layer3
│ └── image-layer3.txt
├── image-layer4
│ └── image-layer4.txt
└── mnt
├── container-layer.txt
├── image-layer2.txt
├── image-layer3.txt
├── image-layer4.txt
└── imagge-layer1.txt
查看文件读写权限,如第六步所说,只有container-layer 有读写权限
cat /sys/fs/aufs/si_b9dfd42676b40eb5/*
(si_b9dfd42676b40eb5 为系统为此aufs新建的)
maojiancai@bogon:/$ cat /sys/fs/aufs/si_b9dfd42676b40eb5/*
/home/maojiancai/mygo/aufs/container-layer=rw
/home/maojiancai/mygo/aufs/image-layer4=ro
/home/maojiancai/mygo/aufs/image-layer3=ro
/home/maojiancai/mygo/aufs/image-layer2=ro
/home/maojiancai/mygo/aufs/image-layer1=ro
64
65
66
67
68
/home/maojiancai/mygo/aufs/container-layer/.aufs.xino
- 现在往mnt 下imagge-layer2.txt里随便再写些东西
echo -e "write to layer 2" >>/home/maojiancai/mygo/aufs/mnt/image-layer2.txt
- 查看 mnt 下的image-layer2.txt
maojiancai@bogon:~/mygo/aufs/mnt$ cat image-layer2.txt
I am image layer 2
write to layer 2
- 查看原image-layer2.txt
maojiancai@bogon:~/mygo/aufs$ cat image-layer2/image-layer2.txt
I am image layer 2
==我们可以得出结论mnt下挂载的文件更新了,而原来的文件未改变==
docker 容器也是如此,只有contanier层是可以读写的,下层的image 是只读的,至此我们完成了一个简单的aufs
网友评论