(3)UFS

Union File System

Union File System是一種為linux FressBSD和NetBSD操作系統,把其他文件系統聯合到一個聯合掛載點的文件系統服務。

AUSF 時Docker選用的第一種驅動。AUFS具有快速啟動容器、高效利用存儲和內存的優點,直到現在AUFS仍是Docker支持的一種存儲驅動類型。接下來,介紹一下Docker是如何利用AUFS存儲image和container的。

手動實現AUFS

  1. 建一個文件夾名為aufs
  2. 在aufs下創建文件夾mnt作為掛載點
  3. 在aufs下創建container-layer文件夾,創建container-layer.txt 內容為"I am container layer"
  4. 在aufs下創建四個文件夾分別為 image-layer1 image-layer2 image-layer3 image-layer4
  5. 在上一條的四個文件夾內分別寫四個文件,分別為image-layer1.txt ... 內容分別為 "I am image layer 1"...
  6. 把建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
  1. 現在往mnt 下imagge-layer2.txt里隨便再寫些東西

echo -e "write to layer 2" >>/home/maojiancai/mygo/aufs/mnt/image-layer2.txt

  1. 查看 mnt 下的image-layer2.txt
maojiancai@bogon:~/mygo/aufs/mnt$ cat image-layer2.txt
I am image layer 2
write to layer 2
  1. 查看原image-layer2.txt
maojiancai@bogon:~/mygo/aufs$ cat image-layer2/image-layer2.txt
I am image layer 2

==我們可以得出結論mnt下掛載的文件更新了,而原來的文件未改變==

docker 容器也是如此,只有contanier層是可以讀寫的,下層的image 是只讀的,至此我們完成了一個簡單的aufs

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容