?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
VFS存儲驅(qū)動程序不是聯(lián)合文件系統(tǒng);相反,每個圖層都是磁盤上的目錄,并且沒有寫時復(fù)制支持。要創(chuàng)建一個新圖層,先前的圖層會進(jìn)行“深層復(fù)制”。與其他存儲驅(qū)動程序相比,這會導(dǎo)致磁盤性能下降和磁盤使用空間更多。但是,它強(qiáng)大,穩(wěn)定,適用于各種環(huán)境。它也可以用作在測試環(huán)境中驗(yàn)證其他存儲后端的機(jī)制。
vfs
存儲驅(qū)動程序配置Docker停止Docker。$ sudo systemctl stop docker
2. 編輯/etc/docker/daemon.json
。如果它還不存在,請創(chuàng)建它。假設(shè)文件為空,請?zhí)砑右韵聝?nèi)容。
{ "storage-driver": "vfs" }
如果daemon.json
文件包含格式錯誤的JSON,Docker將無法啟動。
3. 啟動Docker。$ sudo systemctl start docker
4. 驗(yàn)證守護(hù)進(jìn)程正在使用vfs
存儲驅(qū)動程序。使用該docker info
命令并查找Storage Driver
和Backing filesystem
。
$ docker info存儲驅(qū)動程序:vfs <output truncated>
Docker現(xiàn)在使用vfs
存儲驅(qū)動程序。Docker自動創(chuàng)建了/var/lib/docker/vfs/
目錄,其中包含運(yùn)行容器使用的所有圖層。
vfs
存儲驅(qū)動程序作品VFS不是聯(lián)合文件系統(tǒng)。相反,每個圖像層和可寫容器層都在Docker主機(jī)上表示為子目錄/var/lib/docker/
。聯(lián)合安裝提供了所有圖層的統(tǒng)一視圖。目錄名稱不直接對應(yīng)于圖層本身的ID。
VFS不支持寫入時拷貝(COW),因此每次創(chuàng)建一個新圖層時,它都是其父圖層的深層副本。這些圖層都位于下方/var/lib/docker/dir/
。
以下docker pull
命令顯示了一個Docker主機(jī)下載一個包含五層的Docker鏡像。
$ docker pull ubuntu Using default tag: latest latest: Pulling from library/ubuntu e0a742c2abfd: Pull complete 486cb8339a27: Pull complete dc6f0d824617: Pull complete 4f7a5649a30e: Pull complete 672363445ad2: Pull complete Digest: sha256:84c334414e2bfdcae99509a6add166bbb4fa4041dc3fa6af08046a66fed3005f Status: Downloaded newer image for ubuntu:latest
pull之后,這些層中的每一層都被表示為一個子目錄/var/lib/docker/vfs/dir/
。目錄名稱與docker pull
命令中顯示的圖像層ID不相關(guān)。要查看每個圖層在磁盤上占用的大小,可以使用du -sh
命令,該命令將大小視為可讀的值。
$ ls -l /var/lib/docker/vfs/dir/total 0drwxr-xr-x. 2 root root 19 Aug 2 18:19 3262dfbe53dac3e1ab7dcc8ad5d8c4d586a11d2ac3c4234892e34bff7f6b821e drwxr-xr-x. 21 root root 224 Aug 2 18:23 6af21814449345f55d88c403e66564faad965d6afa84b294ae6e740c9ded2561 drwxr-xr-x. 21 root root 224 Aug 2 18:23 6d3be4585ba32f9f5cbff0110e8d07aea5f5b9fbb1439677c27e7dfee263171c drwxr-xr-x. 21 root root 224 Aug 2 18:23 9ecd2d88ca177413ab89f987e1507325285a7418fc76d0dcb4bc021447ba2bab drwxr-xr-x. 21 root root 224 Aug 2 18:23 a292ac6341a65bf3a5da7b7c251e19de1294bd2ec32828de621d41c7ad31f895 drwxr-xr-x. 21 root root 224 Aug 2 18:23 e92be7a4a4e3ccbb7dd87695bca1a0ea373d4f673f455491b1342b33ed91446b
$ du -sh /var/lib/docker/vfs/dir/* 4.0K /var/lib/docker/vfs/dir/3262dfbe53dac3e1ab7dcc8ad5d8c4d586a11d2ac3c4234892e34bff7f6b821e 125M /var/lib/docker/vfs/dir/6af21814449345f55d88c403e66564faad965d6afa84b294ae6e740c9ded2561 104M /var/lib/docker/vfs/dir/6d3be4585ba32f9f5cbff0110e8d07aea5f5b9fbb1439677c27e7dfee263171c 125M /var/lib/docker/vfs/dir/9ecd2d88ca177413ab89f987e1507325285a7418fc76d0dcb4bc021447ba2bab 104M /var/lib/docker/vfs/dir/a292ac6341a65bf3a5da7b7c251e19de1294bd2ec32828de621d41c7ad31f895 104M /var/lib/docker/vfs/dir/e92be7a4a4e3ccbb7dd87695bca1a0ea373d4f673f455491b1342b33ed91446b
以上輸出結(jié)果顯示三層各取104M,兩層取125M。這些目錄彼此之間只有很小的差異,但在磁盤上占用的空間幾乎相同。這是使用vfs
存儲驅(qū)動程序的一個缺點(diǎn)。
了解圖像,容器和存儲驅(qū)動程序
選擇存儲驅(qū)動程序
AUFS存儲驅(qū)動程序在實(shí)踐中
OverlayFS存儲驅(qū)動程序在實(shí)踐中的應(yīng)用
Btrfs存儲驅(qū)動程序在實(shí)踐中的應(yīng)用
設(shè)備Mapper存儲驅(qū)動程序在實(shí)踐中的應(yīng)用