日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Docker 魔法解密:探索 UnionFS 与 OverlayFS

發(fā)布時(shí)間:2024/1/21 44 coder
生活随笔 收集整理的這篇文章主要介紹了 Docker 魔法解密:探索 UnionFS 与 OverlayFS 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文主要介紹了 Docker 的另一個(gè)核心技術(shù):Union File System。主要包括對(duì) overlayfs 的演示,以及分析 docker 是如何借助 ufs 實(shí)現(xiàn)容器 rootfs 的。


如果你對(duì)云原生技術(shù)充滿好奇,想要深入了解更多相關(guān)的文章和資訊,歡迎關(guān)注微信公眾號(hào)。

搜索公眾號(hào)【探索云原生】即可訂閱


1. 概述

Union File System

Union File System ,簡(jiǎn)稱 UnionFS 是一種為 Linux FreeBSD NetBSD 操作系統(tǒng)設(shè)計(jì)的,把其他文件系統(tǒng)聯(lián)合到一個(gè)聯(lián)合掛載點(diǎn)的文件系統(tǒng)服務(wù)。

它使用 branch 不同文件系統(tǒng)的文件和目錄“透明地”覆蓋,形成一個(gè)單一一致的文件系統(tǒng)。

這些 branches 或者是 read-only 或者是 read-write 的,所以當(dāng)對(duì)這個(gè)虛擬后的聯(lián)合文件系統(tǒng)進(jìn)行寫操作的時(shí)候,系統(tǒng)是真正寫到了一個(gè)新的文件中??雌饋?lái)這個(gè)虛擬后的聯(lián)合文件系統(tǒng)是可以對(duì)任何文件進(jìn)行操作的,但是其實(shí)它并沒(méi)有改變?cè)瓉?lái)的文件,這是因?yàn)?unionfs 用到了一個(gè)重要的資管管理技術(shù)叫寫時(shí)復(fù)制。

寫時(shí)復(fù)制(copy-on-write,下文簡(jiǎn)稱 CoW),也叫隱式共享,是一種對(duì)可修改資源實(shí)現(xiàn)高效復(fù)制的資源管理技術(shù)。

它的思想是,如果一個(gè)資源是重復(fù)的,但沒(méi)有任何修改,這時(shí)候并不需要立即創(chuàng)建一個(gè)新的資源,這個(gè)資源可以被新舊實(shí)例共享。

創(chuàng)建新資源發(fā)生在第一次寫操作,也就是對(duì)資源進(jìn)行修改的時(shí)候。通過(guò)這種資源共享的方式,可以顯著地減少未修改資源復(fù)制帶來(lái)的消耗,但是也會(huì)在進(jìn)行資源修改的時(shí)候增減小部分的開銷。

UnionFS,最主要的功能是將多個(gè)不同位置的目錄聯(lián)合掛載(union mount)到同一個(gè)目錄下。

比如,我現(xiàn)在有兩個(gè)目錄 A 和 B,它們分別有兩個(gè)文件:

$ tree
.
├── A
│  ├── a
│  └── x
└── B
  ├── b
  └── x

然后,我使用聯(lián)合掛載的方式,將這兩個(gè)目錄掛載到一個(gè)公共的目錄 C 上:

$ mkdir C
$ mount -t aufs -o dirs=./A:./B none ./C

這時(shí),我再查看目錄 C 的內(nèi)容,就能看到目錄 A 和 B 下的文件被合并到了一起:

$ tree ./C
./C
├── a
├── b
└── x

可以看到,在這個(gè)合并后的目錄 C 里,有 a、b、x 三個(gè)文件,并且 x 文件只有一份。這,就是“合并”的含義。

這就是聯(lián)合文件系統(tǒng),目的就是將多個(gè)文件聯(lián)合在一起成為一個(gè)統(tǒng)一的視圖

常見(jiàn)實(shí)現(xiàn)

AUFS

AuFS 的全稱是 Another UnionFS,后改名為 Alternative UnionFS,再后來(lái)干脆改名叫作 Advance UnionFS。

AUFS 完全重寫了早期的 UnionFS 1.x,其主要目的是為了可靠性和性能,并且引入了一些新的功能,比如可寫分支的負(fù)載均衡。

AUFS 的一些實(shí)現(xiàn)已經(jīng)被納入 UnionFS 2.x 版本。

AUFS 只是 Docker 使用的存儲(chǔ)驅(qū)動(dòng)的一種,除了 AUFS 之外,Docker 還支持了不同的存儲(chǔ)驅(qū)動(dòng),包括 aufs、devicemapper、overlay2、zfsvfs 等等,在最新的 Docker 中,overlay2 取代了 aufs 成為了推薦的存儲(chǔ)驅(qū)動(dòng),但是在沒(méi)有 overlay2 驅(qū)動(dòng)的機(jī)器上仍然會(huì)使用 aufs 作為 Docker 的默認(rèn)驅(qū)動(dòng)。

overlayfs

Overlayfs 是一種類似 aufs 的一種堆疊文件系統(tǒng),于 2014 年正式合入 Linux-3.18 主線內(nèi)核,目前其功能已經(jīng)基本穩(wěn)定(雖然還存在一些特性尚未實(shí)現(xiàn))且被逐漸推廣,特別在容器技術(shù)中更是勢(shì)頭難擋。

Overlayfs 是一種堆疊文件系統(tǒng),它依賴并建立在其它的文件系統(tǒng)之上(例如 ext4fs 和 xfs 等等),并不直接參與磁盤空間結(jié)構(gòu)的劃分,僅僅將原來(lái)底層文件系統(tǒng)中不同的目錄進(jìn)行“合并”,然后向用戶呈現(xiàn)。

簡(jiǎn)單的總結(jié)為以下 3 點(diǎn):

  • 1)上下層同名目錄合并;
  • 2)上下層同名文件覆蓋;
  • 3)lower dir 文件寫時(shí)拷貝。

這三點(diǎn)對(duì)用戶都是不感知的。

假設(shè)我們有 dir1 和 dir2 兩個(gè)目錄:

  dir1                    dir2
    /                       /
      a                       a
      b                       c

然后我們可以把 dir1 和 dir2 掛載到 dir3 上,就像這樣:

 dir3
    /
      a
      b
      c

需要注意的是:在 overlay 中 dir1 和 dir2 是有上下關(guān)系的。lower 和 upper 目錄不是完全一致,有一些區(qū)別,具體見(jiàn)下一節(jié)。

2. overlayfs 演示

當(dāng)前 overlayfs 比較主流,因此使用 overlayfs 進(jìn)行演示。

環(huán)境準(zhǔn)備

具體演示如下:

創(chuàng)建一個(gè)如下結(jié)構(gòu)的目錄:

.
├── lower
│   ├── a
│   └── c
├── merged
├── upper
│   ├── a
│   └── b
└── work

具體命令如下:

mkdir ./{merged,work,upper,lower}
touch ./upper/{a,b}
touch ./lower/{a,c}

然后進(jìn)行 mount 操作:

# -t overlay 表示文件系統(tǒng)為 overlay
# -o lowerdir=./lower,upperdir=./upper,workdir=./work 指定 lowerdir、upperdir以及 workdir這3個(gè)目錄。
# 其中 lowerdir 是自讀的,upperdir是可讀寫的,
 sudo mount \
            -t overlay \
            overlay \
            -o lowerdir=./lower,upperdir=./upper,workdir=./work \
            ./merged

此時(shí)目錄結(jié)構(gòu)如下:

.
├── lower
│   ├── a
│   └── c
├── merged
│   ├── a
│   ├── b
│   └── c
├── upper
│   ├── a
│   └── b
└── work
    └── work

可以看到,merged 目錄已經(jīng)可以同時(shí)看到 lower 和 upper 中的文件了,而由于文件 a 同時(shí)存在于 lower 和 upper 中,因此 lower 中的被覆蓋了,只顯示了一個(gè) a。

修改文件

雖然 lower 和 upper 中的文件都出現(xiàn)在了 merged 目錄,但是二者還是有區(qū)別的。

lower 為底層目錄,只提供數(shù)據(jù),不能寫。

upper 為上層目錄,是可讀寫的。

測(cè)試:

# 分別對(duì) merged 中的文件b和c寫入數(shù)據(jù)
# 其中文件 c 來(lái)自 lower,b來(lái)自 upper
echo "will-persist"  > ./merged/b
echo "wont-persist"  > ./merged/c

修改后從 merged 這個(gè)視圖進(jìn)行查看:

$ cat ./merged/b
will-persist
$ cat ./merged/c
wont-persist

可以發(fā)現(xiàn),好像兩個(gè)文件都被更新了,難道上面的結(jié)論是錯(cuò)的?

再?gòu)?upper 和 lower 視角進(jìn)行查看:

$ cat ./upper/b
will-persist
$ cat ./lower/c
(empty)

可以發(fā)現(xiàn) lower 中的文件 c 確實(shí)沒(méi)有被改變。

那么 merged 中查看的時(shí)候,文件 c 為什么有數(shù)據(jù)呢?

由于 lower 是不可寫的,因此采用了 CoW 技術(shù),在對(duì) c 進(jìn)行修改時(shí),復(fù)制了一份數(shù)據(jù)到 overlay 的 upper dir,即這里的 upper 目錄,進(jìn)入 upper 目錄查看是否存在 c 文件:

[root@iZ2zefmrr626i66omb40ryZ upper]$ ll
total 8
-rw-r--r-- 1 root root  0 Jan 18 18:50 a
-rw-r--r-- 1 root root 13 Jan 18 19:10 b
-rw-r--r-- 1 root root 13 Jan 18 19:10 c
[root@iZ2zefmrr626i66omb40ryZ upper]$ cat c
wont-persist

可以看到,upper 目錄中確實(shí)存在了 c 文件,

因?yàn)槭菑?lower copy 到 upper,因此也叫做 copy_up。

刪除文件

首先往 lower 目錄中寫入一個(gè)文件 f

[root@iZ2zefmrr626i66omb40ryZ ufs]$  cd lower/
[root@iZ2zefmrr626i66omb40ryZ lower]$ echo fff >> f

然后到 merge 目錄查看,能否看到文件 f

[root@iZ2zefmrr626i66omb40ryZ lower]$ ls ../merged/
f

果然 lower 中添加后,merged 中也能直接看到了。

然后再 merged 中去刪除文件 f:

[root@iZ2zefmrr626i66omb40ryZ lower]$ cd ../merged/
[root@iZ2zefmrr626i66omb40ryZ merged]$ rm -rf f
# merged 中刪除后 lower 中文件還在
[root@iZ2zefmrr626i66omb40ryZ merged]$ ls ../lower/
a  c  e  f
# 而 upper 中出現(xiàn)了一個(gè)大小為0的c類型文件f
[root@iZ2zefmrr626i66omb40ryZ merged]# ls -l ../upper/
total 0
c--------- 1 root root 0, 0 Jan 18 19:28 f

可以發(fā)現(xiàn),overlay 中刪除 lower 中的文件,其實(shí)也是在 upper 中創(chuàng)建一個(gè)標(biāo)記,表示這個(gè)文件已經(jīng)被刪除了,而不會(huì)真正刪除 lower 中的文件。

測(cè)試一下:

[root@iZ2zefmrr626i66omb40ryZ merged]$ rm -rf ../upper/f
[root@iZ2zefmrr626i66omb40ryZ merged]$ ls
f
[root@iZ2zefmrr626i66omb40ryZ merged]$ cat f
fff

把 upper 中的大小為 0 的 f 文件給刪掉后,merged 中又可以看到 lower 中 f 了,而且內(nèi)容也是一樣的。

說(shuō)明 overlay 中的刪除其實(shí)是標(biāo)記刪除。再 upper 中添加一個(gè)刪除標(biāo)記,這樣該文件就被隱藏了,從 merged 中看到的效果就是文件被刪除了。

刪除文件或文件夾時(shí),會(huì)在 upper 中添加一個(gè)同名的 c 標(biāo)識(shí)的文件,這個(gè)文件叫 whiteout 文件。

當(dāng)掃描到此文件時(shí),會(huì)忽略此文件名。

添加文件

最后再試一下添加文件

# 首先在 merged 中創(chuàng)建文件 g
[root@iZ2zefmrr626i66omb40ryZ merged]$ echo ggg >> g
[root@iZ2zefmrr626i66omb40ryZ merged]$ ls
g
# 然后查看 upper,發(fā)現(xiàn)也存在文件 g
[root@iZ2zefmrr626i66omb40ryZ merged]$ ls ../upper/
g
# 在查看內(nèi)容,發(fā)送是一樣的
[root@iZ2zefmrr626i66omb40ryZ merged]$ cat ../upper/g
ggg

說(shuō)明 overlay 中添加文件其實(shí)就是在 upper 中添加文件。

測(cè)試一下刪除會(huì)怎么樣呢:

[root@iZ2zefmrr626i66omb40ryZ merged]$ rm -rf ../upper/g
[root@iZ2zefmrr626i66omb40ryZ merged]$ ls
f

把 upper 中的文件 g 刪除了,果然 merged 中的文件 g 也消失了。

3. docker 是如何使用 overlay 的?

上一節(jié)分析了 overlayfs 具體使用,這里分享一下 docker 是怎么使用 overlayfs。

大致流程

每一個(gè) Docker image 都是由一系列的 read-only layers 組成:

  • image layers 的內(nèi)容都存儲(chǔ)在 Docker hosts filesystem 的 /var/lib/docker/aufs/diff 目錄下
  • 而 /var/lib/docker/aufs/layers 目錄則存儲(chǔ)著 image layer 如何堆棧這些 layer 的 metadata。

docker 支持多種 graphDriver,包括 vfs、devicemapper、overlay、overlay2、aufs 等等,其中最常用的就是 aufs 了,但隨著 linux 內(nèi)核 3.18 把 overlay 納入其中,overlay 的地位變得更重。

docker info命令可以查看 docker 的文件系統(tǒng)。

$ docker info
# ...
 Storage Driver: overlay2
#...

比如這里用的就是 overlay2。

例如,假設(shè)我們有一個(gè)由兩層組成的容器鏡像:

   layer1:                 layer2:
    /etc                    /bin
      myconf.ini              my-binary

然后,在容器運(yùn)行時(shí)將把這兩層作為 lower 目錄,創(chuàng)建一個(gè)空upper目錄,并將其掛載到某個(gè)地方:

sudo mount \
            -t overlay \
            overlay \
            -o lowerdir=/layer1:/layer2,upperdir=/upper,workdir=/work \
            /merged

最后將/merged用作容器的 rootfs。

這樣,容器中的文件系統(tǒng)就完成了。

具體分析

以構(gòu)建鏡像方式演示以下 docker 是如何使用 overlayfs 的。

先拉一下 Ubuntu:20.04 的鏡像:

$ docker pull ubuntu:20.04
20.04: Pulling from library/ubuntu
Digest: sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04

然后寫個(gè)簡(jiǎn)單的 Dockerfile :

 FROM ubuntu:20.04

 RUN echo "Hello world" > /tmp/newfile

開始構(gòu)建:

$ docker build -t hello-ubuntu .
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM ubuntu:20.04
 ---> ba6acccedd29
Step 2/2 : RUN echo "Hello world" > /tmp/newfile
 ---> Running in ee79bb9802d0
Removing intermediate container ee79bb9802d0
 ---> 290d8cc1f75a
Successfully built 290d8cc1f75a
Successfully tagged hello-ubuntu:latest

查看構(gòu)建好的鏡像:

$ docker images
REPOSITORY                                             TAG            IMAGE ID       CREATED          SIZE
hello-ubuntu                                           latest         290d8cc1f75a   13 minutes ago   72.8MB
ubuntu                                                 20.04          ba6acccedd29   3 months ago     72.8MB

使用docker history命令,查看鏡像使用的 image layer 情況:

$ docker history hello-ubuntu
IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
290d8cc1f75a   22 seconds ago   /bin/sh -c echo "Hello world" > /tmp/newfile    12B
ba6acccedd29   3 months ago     /bin/sh -c #(nop)  CMD ["bash"]                 0B
<missing>      3 months ago     /bin/sh -c #(nop) ADD file:5d68d27cc15a80653…   72.8MB

帶 missing 標(biāo)記的 layer 是自 Docker 1.10 之后,一個(gè)鏡像的 image layer image history 數(shù)據(jù)都存儲(chǔ)在 個(gè)文件中導(dǎo)致的,這是 Docker 官方認(rèn)為的正常行為。

可以看到,290d8cc1f75a 這一層在最上面,只用了 12Bytes,而下面的兩層都是共享的,這也證明了 AUFS 是如何高效使用磁盤空間的。

然后去找一下具體的文件:

docker 默認(rèn)的存儲(chǔ)目錄是/var/lib/docker,具體如下:

[root@iZ2zefmrr626i66omb40ryZ docker]$ ls -al
total 24
drwx--x--x  13 root root   167 Jul 16  2021 .
drwxr-xr-x. 42 root root  4096 Oct 13 15:07 ..
drwx--x--x   4 root root   120 May 24  2021 buildkit
drwx-----x   7 root root  4096 Jan 17 20:25 containers
drwx------   3 root root    22 May 24  2021 image
drwxr-x---   3 root root    19 May 24  2021 network
drwx-----x  53 root root 12288 Jan 17 20:25 overlay2
drwx------   4 root root    32 May 24  2021 plugins
drwx------   2 root root     6 Jul 16  2021 runtimes
drwx------   2 root root     6 May 24  2021 swarm
drwx------   2 root root     6 Jan 17 20:25 tmp
drwx------   2 root root     6 May 24  2021 trust
drwx-----x   5 root root   266 Dec 29 14:31 volumes

在這里,我們只關(guān)心imageoverlay2就足夠了。

  • image:鏡像相關(guān)
  • overlay2:docker 文件所在目錄,也可能不叫這個(gè)名字,具體和文件系統(tǒng)有關(guān),比如可能是 aufs 等。

先看 image目錄:

docker 會(huì)在/var/lib/docker/image目錄下按每個(gè)存儲(chǔ)驅(qū)動(dòng)的名字創(chuàng)建一個(gè)目錄,如這里的overlay2

[root@iZ2zefmrr626i66omb40ryZ docker]$ cd image/
[root@iZ2zefmrr626i66omb40ryZ image]$ ls
overlay2
# 看下里面有哪些文件
[root@iZ2zefmrr626i66omb40ryZ image]$ tree -L 2 overlay2/
overlay2/
├── distribution
│   ├── diffid-by-digest
│   └── v2metadata-by-diffid
├── imagedb
│   ├── content
│   └── metadata
├── layerdb
│   ├── mounts
│   ├── sha256
│   └── tmp
└── repositories.json

這里的關(guān)鍵地方是imagedblayerdb目錄,看這個(gè)目錄名字,很明顯就是專門用來(lái)存儲(chǔ)元數(shù)據(jù)的地方。

  • layerdb:docker image layer 信息
  • imagedb:docker image 信息

因?yàn)?docker image 是由 layer 組成的,而 layer 也已復(fù)用,所以分成了 layerdb 和 imagedb。

先去 imagedb 看下剛才構(gòu)建的鏡像:

$  cd overlay2/imagedb/content/sha256
$ ls
[root@iZ2zefmrr626i66omb40ryZ sha256]# ls
0c7ea9afc0b18a08b8d6a660e089da618541f9aa81ac760bd905bb802b05d8d5  61ad638751093d94c7878b17eee862348aa9fc5b705419b805f506d51b9882e7
// .... 省略
b20b605ed599feb3c4757d716a27b6d3c689637430e18d823391e56aa61ecf01
60d84e80b842651a56cd4187669dc1efb5b1fe86b90f69ed24b52c37ba110aba  ba6acccedd2923aee4c2acc6a23780b14ed4b8a5fa4e14e252a23b846df9b6c1

可以看到,都是 64 位的 ID,這些就是具體鏡像信息,剛才構(gòu)建的鏡像 ID 為290d8cc1f75a,所以就找290d8cc1f75a開頭的文件:

[root@iZ2zefmrr626i66omb40ryZ sha256]$ cat 290d8cc1f75a4e230d645bf03c49bbb826f17d1025ec91a1eb115012b32d1ff8
{"architecture":"amd64","config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["bash"],"Image":"sha256:ba6acccedd2923aee4c2acc6a23780b14ed4b8a5fa4e14e252a23b846df9b6c1","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"container":"ee79bb9802d0ff311de6d606fad35fa7e9ab0c1cb4113837a50571e79c9454df","container_config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["/bin/sh","-c","echo \"Hello world\" \u003e /tmp/newfile"],"Image":"sha256:ba6acccedd2923aee4c2acc6a23780b14ed4b8a5fa4e14e252a23b846df9b6c1","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"created":"2022-01-17T12:25:14.91890037Z","docker_version":"20.10.6","history":[{"created":"2021-10-16T00:37:47.226745473Z","created_by":"/bin/sh -c #(nop) ADD file:5d68d27cc15a80653c93d3a0b262a28112d47a46326ff5fc2dfbf7fa3b9a0ce8 in / "},{"created":"2021-10-16T00:37:47.578710012Z","created_by":"/bin/sh -c #(nop)  CMD [\"bash\"]","empty_layer":true},{"created":"2022-01-17T12:25:14.91890037Z","created_by":"/bin/sh -c echo \"Hello world\" \u003e /tmp/newfile"}],"os":"linux","rootfs":{"type":"layers","diff_ids":["sha256:9f54eef412758095c8079ac465d494a2872e02e90bf1fb5f12a1641c0d1bb78b","sha256:b3cce2ce0405ffbb4971b872588c5b7fc840514b807f18047bf7d486af79884c"]}}

這就是 image 的 metadata,這里主要關(guān)注 rootfs:

# 和 docker inspect 命令顯示的內(nèi)容差不多
// ...
"rootfs":{"type":"layers","diff_ids":
[
"sha256:9f54eef412758095c8079ac465d494a2872e02e90bf1fb5f12a1641c0d1bb78b",
"sha256:b3cce2ce0405ffbb4971b872588c5b7fc840514b807f18047bf7d486af79884c"
]
}
// ...

可以看到 rootfs 的 diff_ids 是一個(gè)包含了兩個(gè)元素的數(shù)組,這兩個(gè)元素就是組成 hello-ubuntu 鏡像的兩個(gè) Layer 的diffID。

從上往下看,就是底層到頂層,即9f54eef412...是 image 的最底層。

然后根據(jù) layerID 去layerdb目錄尋找對(duì)應(yīng)的 layer:

[root@iZ2zefmrr626i66omb40ryZ overlay2]# tree -L 2 layerdb/
layerdb/
├── mounts
├── sha256
└── tmp

在這里我們只管mountssha256兩個(gè)目錄,先打印以下 sha256 目錄

$ cd /var/lib/docker/image/overlay2/layerdb/sha256/
$ ls
05dd34c0b83038031c0beac0b55e00f369c2d6c67aed11ad1aadf7fe91fbecda
// ... 省略
6aa07175d1ac03e27c9dd42373c224e617897a83673aa03a2dd5fb4fd58d589f

可以看到,layer 里也是 64 位隨機(jī) ID 構(gòu)成的目錄,找到剛才 hello-ubuntu 鏡像的最底層 layer:

$ cd 9f54eef412758095c8079ac465d494a2872e02e90bf1fb5f12a1641c0d1bb78b
[root@iZ2zefmrr626i66omb40ryZ 9f54eef412758095c8079ac465d494a2872e02e90bf1fb5f12a1641c0d1bb78b]$ ls
cache-id  diff  size  tar-split.json.gz

文件含義如下:

  • cache-id:為具體/var/lib/docker/overlay2/<cache-id>存儲(chǔ)路徑
  • diff:diffID,用于計(jì)算 ChainID
  • size:當(dāng)前 layer 的大小

docker 使用了 chainID 的方式來(lái)保存 layer,layer.ChainID 只用本地,根據(jù) layer.DiffID 計(jì)算,并用于 layerdb 的目錄名稱。

chainID 唯一標(biāo)識(shí)了一組(像糖葫蘆一樣的串的底層)diffID 的 hash 值,包含了這一層和它的父層(底層),

  • 當(dāng)然這個(gè)糖葫蘆可以有一顆山楂,也就是 chainID(layer0)==diffID(layer0);
  • 對(duì)于多顆山楂的糖葫蘆,ChainID(layerN) = SHA256hex(ChainID(layerN-1) + " " + DiffID(layerN))。
# 查看 diffID,
$ cat diff
sha256:9f54eef412758095c8079ac465d494a2872e02e90bf1fb5f12a1641c0d1bb78b

由于這是 layer0,所以 chainID 就是 diffID,然后開始計(jì)算 layer1 的 chainID:

ChainID(layer1) = SHA256hex(ChainID(layer0) + " " + DiffID(layer1))

layer0 的 chainID 是9f54...,而 layer1 的 diffID 根據(jù) rootfs 中的數(shù)組可知,為b3cce...

計(jì)算 ChainID:

$ echo -n "sha256:9f54eef412758095c8079ac465d494a2872e02e90bf1fb5f12a1641c0d1bb78b sha256:b3cce2ce0405ffbb4971b872588c5b7fc840514b807f18047bf7d486af79884c" | sha256sum| awk '{print $1}'
6613b10b697b0a267c9573ee23e54c0373ccf72e7991cf4479bd0b66609a631c

一定注意要加上 “sha256:”和中間的空格“ ” 這兩部分。

因此 layer1 的 chainID 就是6613...

找到 layerdb 里面以sha256+6613 開頭的目錄

$ cd /var/lib/docker/image/overlay2/layerdb/sha2566613b10b697b0a267c9573ee23e54c0373ccf72e7991cf4479bd0b66609a631c
# 根據(jù)這個(gè)大小可以知道,就是hello-ubuntu 鏡像的最上面層 layer
[root@iZ2zefmrr626i66omb40ryZ 6613b10b697b0a267c9573ee23e54c0373ccf72e7991cf4479bd0b66609a631c]$ cat size
12
# 查看 cache-id 找到 文件系統(tǒng)中的具體位置
[root@iZ2zefmrr626i66omb40ryZ 6613b10b697b0a267c9573ee23e54c0373ccf72e7991cf4479bd0b66609a631c]$ cat cache-id
83b569c0f5de093192944931e4f41dafb2d7f80eae97e4bd62425c20e2079f65

根據(jù) cache-id 進(jìn)入具體數(shù)據(jù)存儲(chǔ)目錄:

格式為 /var/lib/docker/overlay2/<cache-id>

# 進(jìn)入剛才生成的目錄
$ cd /var/lib/docker/overlay2/83b569c0f5de093192944931e4f41dafb2d7f80eae97e4bd62425c20e2079f65
[root@iZ2zefmrr626i66omb40ryZ 83b569c0f5de093192944931e4f41dafb2d7f80eae97e4bd62425c20e2079f65]# ls -al
total 24
drwx-----x  4 root root    55 Jan 17 20:25 .
drwx-----x 53 root root 12288 Jan 17 20:25 ..
drwxr-xr-x  3 root root    17 Jan 17 20:25 diff
-rw-r--r--  1 root root    26 Jan 17 20:25 link
-rw-r--r--  1 root root    28 Jan 17 20:25 lower
drwx------  2 root root     6 Jan 17 20:25 work
# 查看 diff 目錄
[root@iZ2zefmrr626i66omb40ryZ
83b569c0f5de093192944931e4f41dafb2d7f80eae97e4bd62425c20e2079f65]$ cd diff/
[root@iZ2zefmrr626i66omb40ryZ diff]$ ls
tmp
[root@iZ2zefmrr626i66omb40ryZ diff]$ cd tmp/
[root@iZ2zefmrr626i66omb40ryZ tmp]$ ls
newfile
[root@iZ2zefmrr626i66omb40ryZ tmp]# cat newfile
Hello world

可以看到,我們新增的 newfile 就在這里。


如果你對(duì)云原生技術(shù)充滿好奇,想要深入了解更多相關(guān)的文章和資訊,歡迎關(guān)注微信公眾號(hào)。

搜索公眾號(hào)【探索云原生】即可訂閱


4. 參考

a practical look into overlayfs

overlayfs.txt

docker-overlay2 文件系統(tǒng)

總結(jié)

以上是生活随笔為你收集整理的Docker 魔法解密:探索 UnionFS 与 OverlayFS的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

日日爽天天 | 激情五月综合 | 97理论片 | 亚洲精品乱码久久久久久蜜桃动漫 | 69国产精品视频免费观看 | 91视频 - 88av | 99精品国产99久久久久久福利 | 日韩视频免费观看高清 | 日韩av在线一区二区 | 国产免费又爽又刺激在线观看 | 久久免费看a级毛毛片 | 国产成人一二片 | 欧美国产日韩激情 | 成人a v视频 | 成人a视频片观看免费 | 黄色资源在线观看 | 日韩精品欧美一区 | 日韩免费视频 | 色婷婷国产精品一区在线观看 | 婷婷精品进入 | 顶级bbw搡bbbb搡bbbb | 国产精品va在线 | 中文字幕 婷婷 | 欧美日韩高清一区二区 国产亚洲免费看 | 国产系列精品av | 在线国产中文字幕 | 亚洲免费av网站 | 国产精品va在线观看入 | 91视频成人免费 | 国产在线小视频 | 日韩电影久久久 | 高清不卡一区二区在线 | 91精品国产麻豆国产自产影视 | 久久国产剧场电影 | 狠狠色香婷婷久久亚洲精品 | 欧美在线不卡一区 | 三级黄色大片在线观看 | 国色天香在线 | 伊人久久在线观看 | 久久综合爱 | 手机看片午夜 | 日本精品久久久久影院 | 992tv又爽又黄的免费视频 | 探花视频在线观看免费版 | 久久久久久久久久久久久影院 | 色播五月激情五月 | 狠狠狠狠狠操 | 手机看片1042 | av电影在线免费观看 | 久久精品一区二区 | 色吧av色av | 亚洲国产影院av久久久久 | 亚洲成人免费在线观看 | 亚洲成人精品久久 | 国产一级二级视频 | 国产真实在线 | 性色av一区二区三区在线观看 | 天天射天天射天天 | 色综合久久天天 | 色综合网在线 | 在线视频 日韩 | 国产精品高潮在线观看 | 久久人人爽人人爽人人片av免费 | 亚洲片在线观看 | 国产精品2区 | 日韩成人看片 | 精品久久久久久一区二区里番 | 久久国产精品99久久久久久丝袜 | 99精品免费网 | 96亚洲精品久久 | 亚洲在线视频网站 | 天天色天天射天天综合网 | 国产手机av | 特级黄色电影 | 国产精品久久伊人 | 国产成人三级三级三级97 | 91麻豆网站 | 国产高清视频在线观看 | 欧美一级日韩三级 | 中文字幕在线播出 | 天天激情在线 | 亚洲网久久 | 精品96久久久久久中文字幕无 | 欧美日bb| 亚洲国产精品小视频 | 成人午夜电影网 | 免费看污在线观看 | 国产一区视频免费在线观看 | 国产中文字幕在线观看 | 婷婷色在线视频 | 婷婷丁香在线视频 | 欧美一级特黄高清视频 | 美女视频久久黄 | 九九热在线精品视频 | 一区二区视频在线免费观看 | 国产精品v欧美精品v日韩 | 亚洲精品国产精品国自 | 99精品在线免费视频 | 日韩成人精品在线观看 | 天天草综合网 | 最近中文字幕高清字幕在线视频 | 久久tv| 精品美女久久 | 午夜在线免费观看视频 | 午夜国产一区二区 | 国产日韩欧美中文 | 亚洲黄色三级 | 久久色网站 | 久久九九精品久久 | 欧美精品日韩 | 三级av网站| 免费中文字幕在线观看 | 亚洲高清91| 免费观看av | 99精品在线视频观看 | 日韩欧美在线综合网 | 五月婷婷综合激情 | 人操人| 国产一区二区视频在线 | 久久久麻豆 | 成人午夜免费福利 | 夜夜操网站 | 久久久免费精品视频 | av动态图片 | 欧美精选一区二区三区 | 天天操天天弄 | 久久不卡国产精品一区二区 | 免费日韩精品 | www亚洲一区 | 国产精品久久久久久久久久 | 色综合久久综合网 | 在线观看免费版高清版 | 国产大片黄色 | 国产成人精品网站 | 丁香六月五月婷婷 | 久久精品资源 | 911久久 | 欧美日韩免费一区二区 | 久久久久成人精品免费播放动漫 | 天天操夜夜曰 | 91最新视频在线观看 | 伊人成人久久 | 一区二区国产精品 | 天天操网址| 欧美ⅹxxxxxx | 成年人在线免费看视频 | 亚洲激情一区二区三区 | 精品婷婷 | 国产成人av电影在线观看 | 久久有精品 | 国产小视频在线观看 | 我爱av激情网 | 亚洲精品婷婷 | 一级一级一片免费 | 久草久热 | 在线观看成人小视频 | 午夜av在线免费 | 亚洲国产精品va在线 | 最新国产中文字幕 | 国产系列精品av | 日日狠狠| 日韩免费b | 91精彩视频| 国产在线日本 | av免费观看网站 | 久久久免费在线观看 | 久久精品1区 | 久久综合五月婷婷 | 国产亚洲欧美在线视频 | 日韩在线短视频 | 久久香蕉一区 | 亚洲黄色免费观看 | 天天干夜夜爱 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 成人免费看视频 | 狠狠色狠狠色综合日日小说 | a级国产毛片 | 亚洲国产黄色 | 91精品老司机久久一区啪 | 青青草久草在线 | 国产美女主播精品一区二区三区 | 91看毛片 | 日韩中文字幕在线不卡 | 久久久久国产精品免费网站 | 成人国产在线 | 国产v在线 | 欧美日韩大片在线观看 | 国产黄色av影视 | 国内一级片在线观看 | 91视视频在线直接观看在线看网页在线看 | 91日韩精品一区 | www国产亚洲精品久久麻豆 | 狠狠综合| 国产精品久久久久免费a∨ 欧美一级性生活片 | 久久国产亚洲精品 | 911av视频| 国内揄拍国产精品 | av日韩av| 成人欧美一区二区三区黑人麻豆 | 中文日韩在线 | 91精品专区 | 免费在线观看亚洲视频 | 日本不卡一区二区三区在线观看 | 久久精品毛片 | 麻豆精品在线视频 | 2023天天干| 中文字幕成人在线观看 | 99精品在线播放 | 久久久麻豆精品一区二区 | 久久成人国产精品一区二区 | 国产只有精品 | 日本中文字幕电影在线免费观看 | 久久精品成人热国产成 | h视频日本| 天天操天天操 | 99久久婷婷国产一区二区三区 | av黄色一级片 | 91社区国产高清 | 日韩黄色中文字幕 | 91久久在线观看 | 久久精品在线免费观看 | 久久久免费毛片 | 午夜精品一区二区三区可下载 | 成人网色 | 婷婷开心久久网 | 免费黄色av片 | 九九国产精品视频 | 欧美日韩精品影院 | 91精品蜜桃 | 99麻豆视频 | 亚洲天堂免费视频 | 三级视频日韩 | 精品国产一区二区三区免费 | 日韩欧三级 | 国产精品免费久久久久久久久久中文 | av不卡中文 | 久久久久久久久久亚洲精品 | 亚洲国产精品影院 | 91在线影院| 亚洲成人家庭影院 | 日韩草比 | 涩涩资源网 | 国产98色在线 | 日韩 | 最新国产精品亚洲 | 日韩精品免费在线 | 午夜 免费 | 亚洲一区二区视频在线 | 国产丝袜美腿在线 | 久久久精品视频网站 | 久久综合九色综合97_ 久久久 | 久草在线国产 | 国产日韩视频在线 | 又爽又黄又无遮挡网站动态图 | 国产在线播放不卡 | 色婷婷97 | 五月婷婷在线视频观看 | 91高清在线| 97av视频在线观看 | 国产视频精品免费播放 | 日本精品视频免费 | 亚洲天天在线 | 久久99偷拍视频 | 91在线视频播放 | 成人v| 人人爽人人舔 | 夜夜操天天摸 | 欧美国产一区二区 | 看片网站黄色 | 久久a热6| 伊人电影在线观看 | 国产婷婷久久 | 久久福利 | 色婷婷综合在线 | 视频在线观看国产 | 高清av免费一区中文字幕 | 国内精品久久久久久久久 | 国产精品久久久亚洲 | www.久久99| 国产精品美女久久久久久久久久久 | 婷婷久久国产 | 极品嫩模被强到高潮呻吟91 | 久久高清国产 | 欧美成人性网 | 日韩毛片久久久 | 精品二区视频 | 高清免费在线视频 | 婷婷色中文 | 亚洲资源在线观看 | 亚洲少妇自拍 | 亚州国产视频 | 国产精品网站 | 中文字幕色在线 | 97免费中文视频在线观看 | 97精品国产97久久久久久春色 | 五月婷网站 | 波多野结衣日韩 | 国产在线观看91 | 日韩免费视频在线观看 | 国产亚洲视频在线免费观看 | 涩涩成人在线 | 久久久999免费视频 日韩网站在线 | 欧美一二区在线 | 91在线产啪 | 久久久国产网站 | 色欧美88888久久久久久影院 | 午夜精品一区二区三区免费视频 | 国产亚洲精品美女久久 | 九九视频网 | 色鬼综合网 | 国产伦理久久精品久久久久_ | 欧美激情视频一区二区三区免费 | 在线黄色国产电影 | 色一级片| 成人97视频一区二区 | 色偷偷88888欧美精品久久久 | 免费网址在线播放 | 少妇高潮冒白浆 | 99在线热播精品免费 | 黄污视频大全 | 在线观看亚洲专区 | aav在线| 欧美亚洲专区 | av网站地址 | 欧美片网站yy| 在线观看91网站 | 国产一区二区在线精品 | 精品视频一区在线观看 | 五月天久久婷婷 | 久久久亚洲国产精品麻豆综合天堂 | 国产精品精品国产 | 欧美一区二区三区四区夜夜大片 | 欧美日韩在线观看视频 | av九九九| 夜夜爽88888免费视频4848 | 色小说av| 亚洲精品电影在线 | 久久九九免费 | 国产精品久久久久久久久久久久冷 | 亚洲国产黄色片 | 亚洲国产日韩一区 | 伊人狠狠色 | 婷婷深爱网 | 免费99精品国产自在在线 | 国产精品成人一区二区 | 久久艹精品 | 中文字幕中文字幕中文字幕 | 精品国产一二三四区 | 亚洲一级电影在线观看 | 国产在线视频不卡 | 日韩三级免费 | 欧美日韩一区二区久久 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 又色又爽又黄 | 国产a精品 | 丁香婷婷自拍 | 91精品国产92久久久久 | 91视频啪| 日日干干夜夜 | 久久免费视频在线观看30 | 98精品国产自产在线观看 | 国产精品国产自产拍高清av | 久久免费在线观看 | 一本一本久久a久久精品综合小说 | 天天视频色 | 久久99精品久久久久久 | 国产视频久久 | 亚洲欧美日韩在线一区二区 | 亚洲综合五月 | 国产精品亚洲片在线播放 | 91网址在线观看 | 亚洲桃花综合 | 天堂视频中文在线 | 97综合视频 | 日本一区二区免费在线观看 | 丁香视频五月 | 久久亚洲成人网 | 成人一区二区三区中文字幕 | 视频在线99re| 不卡视频在线看 | 五月天综合激情 | 国产专区一 | 精品国产欧美一区二区三区不卡 | 国产在线播放一区二区三区 | 人人超碰97 | 久久久69 | 美女精品久久久 | 久久在线精品视频 | 不卡的av片 | 午夜色大片在线观看 | 欧美地下肉体性派对 | 日韩字幕在线观看 | 看av免费 | 精品国产一区二区三区久久久蜜臀 | 夜夜操狠狠操 | 精品国产电影 | 天天做天天爱天天爽综合网 | 在线电影av | 欧美日韩中文字幕综合视频 | 国产精品18久久久久vr手机版特色 | 免费裸体视频网 | 9热精品| av高清影院 | 国产看片网站 | 国产精品久久久久久五月尺 | 国产激情小视频在线观看 | 91福利视频网站 | 亚洲小视频在线 | 亚洲va在线va天堂 | 国产精品久久久久久久7电影 | 久久精品99国产精品 | 91av欧美 | 亚洲一二视频 | 中文字幕久久网 | 日韩免费电影一区二区三区 | 久久久久久久久久免费视频 | 精品美女国产在线 | 一级黄色大片在线观看 | www.com久久久 | 亚洲视频分类 | 久久久免费 | 日日精品| www欧美色| 天天综合久久综合 | 激情综合网五月 | 国产二区电影 | 国产成人精品一区一区一区 | 国产资源免费 | 麻豆精品在线视频 | 黄污网站在线 | 久久精品99国产精品亚洲最刺激 | 99精品国产一区二区 | 99久久婷婷国产 | 亚洲在线激情 | 久色网| 日本最大色倩网站www | 国产在线观看中文字幕 | 久久成 | 一区二区三区在线看 | 成人久久18免费网站麻豆 | 日本精品久久久久中文字幕5 | 中日韩在线 | 国产婷婷色 | 久久精品96 | 国产精品麻豆视频 | 久久精品一区二区国产 | 伊人永久在线 | 国产日韩精品在线观看 | 91xav| 日夜夜精品视频 | 国产黄色看片 | 丁香久久 | 午夜精品一区二区三区视频免费看 | 精品国内自产拍在线观看视频 | 日韩欧美精品一区二区三区经典 | 蜜臀久久99精品久久久无需会员 | 麻豆视传媒官网免费观看 | 韩国在线一区 | 国产精品久久久久久久久久直播 | 在线黄色免费 | 国产少妇在线观看 | 久久精品久久99精品久久 | 成人av免费 | 欧美二区在线播放 | 国产a视频免费观看 | 99这里精品| 久久成人资源 | 成 人 黄 色 片 在线播放 | 欧美影片| a级片韩国| 精品视频www | 国产精品麻豆免费版 | 亚州日韩中文字幕 | 日韩av在线看 | 在线你懂| 色综合天天视频在线观看 | 亚洲另类在线视频 | 亚洲成人免费在线 | 美女网站在线看 | 日韩理论在线视频 | 日韩电影一区二区三区在线观看 | 99国产精品视频免费观看一公开 | 亚洲精品乱码 | 精品久久久久久久久中文字幕 | www.久久91| 欧美日韩精品在线观看 | 免费看的黄色小视频 | 九九涩涩av台湾日本热热 | 欧美精品久久久久久久免费 | 精品国产自在精品国产精野外直播 | 91精品久久久久久久91蜜桃 | av电影 一区二区 | 欧美日韩高清一区二区三区 | 亚洲精品高清视频在线观看 | 欧美精品久久久久久久久老牛影院 | 99在线免费观看视频 | 九七视频在线观看 | 开心激情五月婷婷 | 亚洲激情 | 免费日p视频| 丁香九月婷婷 | 精品国产片| www.天天干 | 国产成人一区二区三区久久精品 | 国产精品第一 | 国产在线理论片 | 亚洲综合激情小说 | 天天操天天添天天吹 | 91专区在线观看 | 我要看黄色一级片 | 国产成人99久久亚洲综合精品 | 亚州国产精品视频 | 国产原创在线观看 | 色a资源在线 | av电影久久 | 人人草网站 | 国产精品久久久久免费观看 | 四虎国产视频 | av在线播放观看 | 毛片网在线观看 | www最近高清中文国语在线观看 | 日日夜夜添 | 亚洲欧洲精品一区二区 | 亚洲国产中文在线 | 久久成人国产精品 | 国产在线观看网站 | 欧美一区二区三区在线看 | 91九色蝌蚪在线 | av免费电影在线观看 | 久久久精品日本 | 欧美va天堂va视频va在线 | 久久久久亚洲精品成人网小说 | 激情六月婷婷久久 | 色视频网页| 天天射天天干天天插 | 久久精品香蕉 | 成片视频在线观看 | 久久99中文字幕 | 国产在线精品视频 | 色先锋资源网 | 五月天av在线 | 夜夜操网站 | 免费高清男女打扑克视频 | 超碰九九 | 麻豆国产网站入口 | 蜜臀av免费一区二区三区 | 久久久免费观看 | 亚洲免费婷婷 | 97超碰资源| 精品一区二区三区在线播放 | 亚洲砖区区免费 | 亚洲国产99 | 久久夜夜夜 | 免费高清男女打扑克视频 | 久久精品3| 国产网站在线免费观看 | 国产亚洲视频在线观看 | 右手影院亚洲欧美 | 黄色在线看网站 | 久久国产免 | 综合色综合 | 成人在线视频一区 | 亚洲精品www. | 狠狠的干狠狠的操 | 精品一区91 | 成人毛片在线观看视频 | 色婷婷综合视频在线观看 | 中文字幕在线有码 | 久久专区 | 国产成人三级在线播放 | 国产99久 | 国产在线精品播放 | 日本久久视频 | 国产免费黄视频在线观看 | 五月婷婷欧美视频 | 99爱这里只有精品 | 国产精品国产三级国产不产一地 | 成人看片 | 久久精品一区二区三 | 99精品国产福利在线观看免费 | 开心激情久久 | 91亚洲精品乱码久久久久久蜜桃 | 1000部国产精品成人观看 | 国产护士hd高朝护士1 | 精品久久久久国产免费第一页 | 美女视频永久黄网站免费观看国产 | 日韩理论片在线 | 免费在线激情电影 | 波多野结衣理论片 | 国产精品免费一区二区三区 | 亚洲国产伊人 | 外国av网| 日韩精品在线观看视频 | 成人av在线影视 | 欧美一二三四在线 | 99在线精品免费视频九九视 | 免费av在线网 | 久久99国产精品久久99 | 中文字幕在线资源 | 久久五月婷婷丁香社区 | 国产精品久久久久久久av电影 | 亚洲国产成人在线观看 | 香蕉视频在线免费 | 亚洲自拍自偷 | 在线电影 一区 | 欧美日韩在线观看视频 | 99久久精品午夜一区二区小说 | 国产专区在线视频 | 九九久久婷婷 | 最新日韩电影 | 精品在线视频播放 | 久久一区二 | 日韩小视频网站 | 国产日韩在线播放 | av888av.com| 久久精品播放 | 成人中心免费视频 | 免费在线观看av的网站 | 国产精品久久久久久五月尺 | 91在线中文 | 99色在线观看视频 | 国产精品理论在线观看 | 色婷婷国产 | 欧美一二三区在线播放 | 欧美日韩精品在线一区二区 | 色婷婷激情电影 | 麻豆视频免费在线 | 日本中文乱码卡一卡二新区 | 国产成人精品一区在线 | 最新av网址在线观看 | 手机av看片| 久久精品站 | 碰碰影院 | 日韩欧美一区视频 | 国产精品资源在线 | 日韩av手机在线看 | 日韩网站在线 | 在线观看视频日韩 | 日本久久高清视频 | 91亚洲精品国偷拍 | 国产又粗又长又硬免费视频 | 亚洲国产精品va在线 | 欧美一区二区三区在线 | 曰本免费av | 国产一区二区三区在线免费观看 | 久久精品视频在线看 | 久久人视频 | 亚洲精品乱码久久久久久蜜桃动漫 | 免费在线观看毛片网站 | 五月婷婷在线观看视频 | 91精品成人| 日本丶国产丶欧美色综合 | www.五月天激情 | 99成人精品 | 日日夜夜操av | 亚洲成人资源在线观看 | 亚洲成a人片77777kkkk1在线观看 | 日韩av电影中文字幕 | 最近中文国产在线视频 | 精品亚洲一区二区三区 | 色综合小说 | 免费日韩av电影 | 91福利小视频| 69久久久久久久 | 国产免费久久精品 | 日本美女xx | 国产精品国产三级国产 | 亚洲午夜精品一区 | 激情丁香| 99久久夜色精品国产亚洲96 | 毛片随便看| 一级片免费观看视频 | 在线香蕉视频 | 色六月婷婷| 免费亚洲一区二区 | 国产手机av在线 | 视频一区亚洲 | 国产美女在线免费观看 | 最新av网址在线 | 色五婷婷 | 久久久久成人免费 | 欧美黑人巨大xxxxx | 91欧美视频网站 | www.av小说| 一区二区影院 | 欧美一级片免费播放 | 激情丁香婷婷 | 91av免费观看 | 日韩一区二区三免费高清在线观看 | 国内精品久久久久久久影视简单 | 久久久精品网 | 国产精品刺激对白麻豆99 | 午夜精品久久久久久久99水蜜桃 | 五月激情在线 | 免费看的av片 | 91精品国产乱码 | 国产91精品一区二区麻豆亚洲 | www.天天操.com | 欧美小视频在线 | 国产视频欧美视频 | 欧美精品你懂的 | 久久试看| 日韩在线| 福利网在线 | 国产精品欧美激情在线观看 | 一本一本久久a久久精品综合 | 一级片免费视频 | 国产亚洲精品久久久久动 | 国产亚洲永久域名 | 免费看片色 | 色爱区综合激月婷婷 | 国产免费观看久久黄 | 国产精选在线 | 麻豆首页 | 久久在线精品视频 | 日本中文乱码卡一卡二新区 | 日韩一级成人av | 91久久电影 | 色婷婷激婷婷情综天天 | 91网页版免费观看 | 国产成人精品久久久 | 在线激情av电影 | 精品在线观看一区二区 | 久久草精品 | 日韩电影中文 | 国产男女无遮挡猛进猛出在线观看 | 国产成人久久精品77777综合 | 色婷婷亚洲婷婷 | 欧美精品视 | 天天操操| 成人av高清在线观看 | 免费在线成人av | 一区二区视频免费在线观看 | 亚洲国产一二三 | 国产69精品久久久久久久久久 | 日韩欧美在线播放 | 九九久久免费视频 | 99re中文字幕 | 国产一卡二卡四卡国 | 天天射天天射天天射 | 91成人精品在线 | 97精品久久人人爽人人爽 | 日日干激情五月 | 久久精品视频播放 | 免费观看www小视频的软件 | 粉嫩av一区二区三区免费 | 在线成人中文字幕 | 99电影| 精品在线视频一区二区三区 | 久久久精品国产一区二区电影四季 | 国产电影黄色av | 一级电影免费在线观看 | 精品999在线观看 | 久久精品成人欧美大片古装 | 久久久久草 | 91人人澡人人爽人人精品 | 久草在线手机观看 | 国产一区二区午夜 | 91精品啪在线观看国产线免费 | 中文字幕一区二区在线播放 | 亚洲国产经典视频 | 免费在线激情电影 | 久久区二区 | 亚洲一级片在线观看 | 久久99热久久99精品 | 在线观看国产 | 手机成人av | 日日干精品| 国产91在线观看 | 国产一区二区久久 | 国产精品久久99综合免费观看尤物 | 国产一区二区在线免费播放 | 国产99在线播放 | 国产丝袜一区二区三区 | 久久夜色精品国产欧美乱极品 | 日韩不卡高清视频 | 欧美日韩在线免费观看 | 国产精品一区二区在线看 | 国产精品视频免费在线观看 | 国内精品亚洲 | 国产美女免费观看 | 免费a v在线 | 人人爽人人干 | 麻豆久久久久久久 | 国产香蕉久久精品综合网 | a视频免费看 | 色婷婷 亚洲 | 91.dizhi永久地址最新 | 97超碰超碰久久福利超碰 | 91日韩在线专区 | 久久久久久毛片精品免费不卡 | 精品国产中文字幕 | 久青草视频| 99久久综合国产精品二区 | 黄污污网站 | 美女国内精品自产拍在线播放 | 国产精品久久久久久久久久三级 | 成年人黄色av| 成人在线你懂得 | 日韩精品免费在线观看 | 国产精品美女久久久久久 | 在线成人一区 | 欧美男同视频网站 | 久久不卡av| 99精品久久精品一区二区 | 9在线观看免费高清完整 | 9在线观看免费高清完整 | 九九电影在线 | 亚洲资源在线网 | 免费69视频 | 00av视频 | 五月婷婷丁香综合 | 97超碰资源总站 | 日日爱网址 | 91亚瑟视频 | 中文在线中文a | 国产精品免费看久久久8精臀av | 伊人网av| 欧美日韩免费在线观看视频 | 久久精品日产第一区二区三区乱码 | 久久人人爽人人爽人人片 | 国产三级视频在线 | 国产成人一级 | 国产精品二区在线观看 | 久久a热6 | 视频在线观看99 | 色姑娘综合网 | 黄色三级免费 | 日日干天天爽 | 久草免费在线视频 | 中文字幕一区二区在线播放 | 成人欧美亚洲 | jizz999| 精品国产1区二区 | 麻豆国产精品永久免费视频 | 狠狠色伊人亚洲综合网站野外 | 特级毛片在线免费观看 | 国产精品区免费视频 | www欧美xxxx| 久久艹欧美 | 5月丁香婷婷综合 | 日韩在线观看电影 | 亚洲综合在线观看视频 | 国产免费人成xvideos视频 | 色多多视频在线观看 | 99视频久久 | 91色视频| 在线小视频你懂的 | 色婷婷亚洲 | 一区二区三区免费在线播放 | 日韩欧美视频一区二区 | 天天爱天天射天天干天天 | 国产96在线观看 | 丁香五婷 | 97精品国产91久久久久久 | 久久激情五月丁香伊人 | 久久久久女教师免费一区 | 国产在线精品一区二区 | 激情六月婷婷久久 | 男女激情片在线观看 | 久精品在线观看 | 天天色天天色天天色 | 精品视频在线视频 | 国产成人三级一区二区在线观看一 | 久久伊人免费视频 | 日本久久片 | 欧美成人按摩 | 美女黄濒 | 国产精品女主播一区二区三区 | 欧美日韩中文在线 | 亚洲午夜久久久久久久久久久 | 亚洲视频中文 | 精品1区二区| 亚洲va韩国va欧美va精四季 | 天天射网| 91精品区| 日韩在线观看视频一区二区三区 | 九九久久久久久久久激情 | 中文字幕一区二区三区在线视频 | 中文字幕国产一区二区 | 久久99久国产精品黄毛片入口 | 美女久久久久久久久久久 | 久久久www成人免费精品张筱雨 | 少妇性xxx| 狠狠色香婷婷久久亚洲精品 | 综合久久网站 | 中文字幕精品一区久久久久 | 97人人添人澡人人爽超碰动图 | 三级av免费观看 | 五月天欧美精品 | 天天人人 | 98涩涩国产露脸精品国产网 | 日日碰夜夜爽 | 国产露脸91国语对白 | 欧美精品久久久久久久免费 | 99久久综合精品五月天 | 激情视频久久 | 99爱精品在线 | 在线精品在线 | 激情自拍av | 国产亚洲精品女人久久久久久 | 中文在线www | 波多野结衣一区三区 | 久久无码av一区二区三区电影网 | av一级在线| 玖玖精品在线 | 免费午夜av| 狠狠色丁香婷综合久久 | 国产欧美在线一区二区三区 | 国产成人av电影 | 国产在线播放一区二区 | 久草香蕉在线视频 | 青青草在久久免费久久免费 | 97在线播放| 欧美一区三区四区 | 成人资源站 | 国产一区在线观看视频 | 亚洲一级电影在线观看 | 午夜电影久久 | 久久久久久久久久久黄色 | 国产精品丝袜久久久久久久不卡 | 国产精品一区二区久久久久 | 久久亚洲国产精品 | 亚洲精品在线国产 | 亚州精品在线视频 | 久久一区二区三区四区 | 久久99久国产精品黄毛片入口 | 一区二区三区精品在线视频 | 中文字幕中文字幕在线一区 | 五月婷婷综合久久 | 欧美日韩精品在线一区二区 | 久久tv | 超碰个人在线 | 亚洲综合欧美激情 | av不卡免费看 | 欧美另类视频 | 国产剧情av在线播放 | 中文字幕欧美日韩va免费视频 | 免费观看日韩av | 久久免费视频观看 | www.亚洲| 久久综合久久综合这里只有精品 | 国产亚洲精品中文字幕 | 91久久久久久国产精品 | 国产一区二区不卡在线 | 国产精品美女久久久久久久久久久 | 一区二区三区免费在线 | 国产色视频网站2 | 国产伦理一区二区 | 亚洲精品欧美专区 | 免费观看www小视频的软件 | 91理论电影| 色老板在线| 国产二区av| 日本久久高清视频 | 91日韩在线视频 | 91九色精品女同系列 | 国产中文字幕视频 | 91桃色国产在线播放 | 在线国产欧美 | 午夜12点| 亚洲精品国产片 | 亚洲在线黄色 | 永久中文字幕 | 黄网站大全 | 最新av在线网站 | 国产视频一区二区在线观看 | 国产女人免费看a级丨片 | 在线视频成人 | 99久久夜色精品国产亚洲96 | 国产亚洲精品久久 | 国产69久久久欧美一级 | 免费午夜视频在线观看 | 二区三区精品 | 波多野结衣日韩 | 国产女人40精品一区毛片视频 | 日本公妇在线观看高清 | 日韩欧美高清不卡 | 欧美日韩高清免费 | 婷婷激情五月 | 久久久精品电影 | 麻豆传媒精品 | 自拍超碰在线 | 精品国产一区二区三区日日嗨 | 99日精品| 亚洲精品国 | av中文字幕亚洲 | av免费在线免费观看 | 日韩欧美一区二区在线 | 永久黄网站色视频免费观看w | 亚洲精品国产精品99久久 | 国产视频一级 | 久久精品欧美一 | 中文字幕色站 | 99亚洲天堂 | 亚洲高清免费在线 | 久久爱影视i | 五月婷丁香 | 国产黄网站在线观看 |