概要
1 aufs文件下系统是什么?有什么特性?
2 aufs文件系统与docker镜像的关系。
3 dockfile如何工作?
4 docker镜像储存到哪里?储存的什么?
5 docker镜像的储存过程简介。
aufs文件下系统是什么?有什么特性?
aufs文件系统全名为advanced multi-layered unification filesystem.
它能够将不同类型的文件系统透明地层叠在一起,实现一个高效的分层文件系统。简言之,它能将不同的目录挂在到统一目录下。我们从几个简单的实验窥探一下aufs文件系统的挂载特性。
实验系统环境
OS : Ubuntu 14.04.2 LTS (GNU/Linux 3.16.0-30-generic x86_64)
docker : client/server 1.12.1
挂载命令:mount -t aufs -o br=path/to/dir/A:path/to/dir/A none path/to/dir/uniondir
mount命令中,-t表示目标文件系统类型,-o表示挂载参数, none表示挂载的不是设备文件。这些都是mount命令的参数。br是aufs的参数,表示分支,多个分支之间用冒号分隔。
挂载实验 ``` mkdir a b uniondir echo 1 > a/1.txt echo 2 > b/2.txt tree #├── a #│ └── 1.txt #├── b #│ └── 2.txt #└── uniondir sudo mount -t aufs -o br=/home/zyf/aufstest/a:/home/zyf/aufstest/b none /home/zyf/aufstest/uniondir tree #├── a #│ └── 1.txt #├── b #│ └── 2.txt #└── uniondir # ├── 1.txt # └── 2.txt ``` 由此可见我们将a目录的1.txt和b目录的2.txt挂载到了uniondir下。 在挂在时候,我们指定a目录在前,所以a目录是逻辑的上层。br参数没有加读写权限之前,逻辑上层(a目录)为读写权限。其余层(b目录)为制度权限。所以如果我们在uniondir创建3.txt,此文件会创建在a目录中。 ``` cd uniondir vim 3.txt cd ../ & tree #├── a #│ ├── 1.txt #│ └── 3.txt #├── b #│ └── 2.txt #└── uniondir # ├── 1.txt # ├── 2.txt # └── 3.txt ``` 同样的,我们如果在一开始在a目录中创建2.txt。在挂在时候会优先挂载2.txt。 因为读写权限的不同,修改1.txt和2.txt内容对a、b的影响也不同: ``` echo 'add sth' >> /root/test/uniondir/1.txt echo 'add sth' >> /root/test/uniondir/2.txt cd ../ & tree #├── a #│ ├── 1.txt #| | 2.txt #│ └── 3.txt #├── b #│ └── 2.txt #└── uniondir # ├── 1.txt # ├── 2.txt # └── 3.txt ``` 可见,对可读写分支(