成人麻豆免费视频精品区,校园春色中文字幕人妻,69国产亚洲精品成人av久久,男女激情久久免费国产,欧美一区二区三区4区,欧美狠狠爱第三页视频,120日本少妇视频,79自拍视频在线观看,中文字幕丝袜美腿一二三区

Docker教程
Docker安裝
Docker使用
Docker實例

Docker容器化

Docker 的核心思想就是如何將應(yīng)用整合到容器中,并且能在容器中實際運(yùn)行。

將應(yīng)用整合到容器中并且運(yùn)行起來的這個過程,稱為“容器化”(Containerizing),有時也叫作“Docker化”(Dockerizing)。

容器是為應(yīng)用而生的,具體來說,容器能夠簡化應(yīng)用的構(gòu)建、部署和運(yùn)行過程。

完整的應(yīng)用容器化過程主要分為以下幾個步驟。

? 編寫應(yīng)用代碼。

? 創(chuàng)建一個 Dockerfile,其中包括當(dāng)前應(yīng)用的描述、依賴以及該如何運(yùn)行這個應(yīng)用。

? 對該 Dockerfile 執(zhí)行 docker image build 命令。

? 等待 Docker 將應(yīng)用程序構(gòu)建到 Docker 鏡像中。

一旦應(yīng)用容器化完成(即應(yīng)用被打包為一個 Docker 鏡像),就能以鏡像的形式交付并以容器的方式運(yùn)行了。

下圖展示了上述步驟。

單體應(yīng)用容器化

接下來我們會逐步展示如何將一個簡單的單節(jié)點 Node.js Web 應(yīng)用容器化。

如果是 Windows 操作系統(tǒng)的話,處理過程也是大同小異。

應(yīng)用容器化的過程大致分為如下幾個步驟:

? 獲取應(yīng)用代碼。

? 分析 Dockerfile。

? 構(gòu)建應(yīng)用鏡像。

? 運(yùn)行該應(yīng)用。

? 測試應(yīng)用。

? 容器應(yīng)用化細(xì)節(jié)。

? 生產(chǎn)環(huán)境中的多階段構(gòu)建。

? 最佳實踐。

⒈ 獲取應(yīng)用代碼

應(yīng)用代碼可以從網(wǎng)盤獲取(https://pan.baidu.com/s/150UgIJPvuQUf0yO3KBLegg 提取碼:pkx4)。

$ cd psweb

$ ls -l
total 28
-rw-r--r-- 1 root root 341 Sep 29 16:26 app.js
-rw-r--r-- 1 root root 216 Sep 29 16:26 circle.yml
-rw-r--r-- 1 root root 338 Sep 29 16:26 Dockerfile
-rw-r--r-- 1 root root 421 Sep 29 16:26 package.json
-rw-r--r-- 1 root root 370 Sep 29 16:26 README.md
drwxr-xr-x 2 root root 4096 Sep 29 16:26 test
drwxr-xr-x 2 root root 4096 Sep 29 16:26 views

該目錄下包含了全部的應(yīng)用源碼,以及包含界面和單元測試的子目錄。這個應(yīng)用結(jié)構(gòu)非常簡單。

應(yīng)用代碼準(zhǔn)備就緒后,接下來分析一下 Dockerfile 的具體內(nèi)容。

⒉ 分析 Dockerfile

在代碼目錄當(dāng)中,有個名稱為 Dockerfile 的文件。這個文件包含了對當(dāng)前應(yīng)用的描述,并且能指導(dǎo) Docker 完成鏡像的構(gòu)建。

在 Docker 當(dāng)中,包含應(yīng)用文件的目錄通常被稱為構(gòu)建上下文(Build Context)。通常將 Dockerfile 放到構(gòu)建上下文的根目錄下。

另外很重要的一點是,文件開頭字母是大寫 D,這里是一個單詞。像“dockerfile”或者“Docker file”這種寫法都是不允許的。

接下來了解一下 Dockerfile 文件當(dāng)中都包含哪些具體內(nèi)容。

$ cat Dockerfile

FROM alpine
LABEL maintainer="nigelpoulton@hotmail.com"
RUN apk add --update nodejs nodejs-npm
COPY . /src
WORKDIR /src
RUN npm install
EXPOSE 8080
ENTRYPOINT ["node", "./app.js"]

Dockerfile 主要包括兩個用途:

? 對當(dāng)前應(yīng)用的描述。

? 指導(dǎo) Docker 完成應(yīng)用的容器化(創(chuàng)建一個包含當(dāng)前應(yīng)用的鏡像)。

不要因 Dockerfile 就是一個描述文件而對其有所輕視!Dockerfile 能實現(xiàn)開發(fā)和部署兩個過程的無縫切換。

同時 Dockerfile 還能幫助新手快速熟悉這個項目。Dockerfile 對當(dāng)前的應(yīng)用及其依賴有一個清晰準(zhǔn)確的描述,并且非常容易閱讀和理解。

因此,要像重視你的代碼一樣重視這個文件,并且將它納入到源控制系統(tǒng)當(dāng)中。

下面是這個文件中的一些關(guān)鍵步驟概述:以 alpine 鏡像作為當(dāng)前鏡像基礎(chǔ),指定維護(hù)者(maintainer)為“nigelpoultion@hotmail.com”,安裝 Node.js 和 NPM,將應(yīng)用的代碼復(fù)制到鏡像當(dāng)中,設(shè)置新的工作目錄,安裝依賴包,記錄應(yīng)用的網(wǎng)絡(luò)端口,最后將 app.js 設(shè)置為默認(rèn)運(yùn)行的應(yīng)用。

具體分析一下每一步的作用。

每個 Dockerfile 文件第一行都是 FROM 指令。

FROM 指令指定的鏡像,會作為當(dāng)前鏡像的一個基礎(chǔ)鏡像層,當(dāng)前應(yīng)用的剩余內(nèi)容會作為新增鏡像層添加到基礎(chǔ)鏡像層之上。

本例中的應(yīng)用基于 Linux 操作系統(tǒng),所以在 FROM 指令當(dāng)中所引用的也是一個 Linux 基礎(chǔ)鏡像;如果要容器化的應(yīng)用是一個基于 Windows 操作系統(tǒng)的應(yīng)用,就需要指定一個像 microsoft/aspnetcore-build 這樣的 Windows 基礎(chǔ)鏡像了。

截至目前,基礎(chǔ)鏡像的結(jié)構(gòu)如下圖所示。

接下來,Dockerfile 中通過標(biāo)簽(LABLE)方式指定了當(dāng)前鏡像的維護(hù)者為“nigelpoulton@hotmail. com”。

每個標(biāo)簽其實是一個鍵值對(Key-Value),在一個鏡像當(dāng)中可以通過增加標(biāo)簽的方式來為鏡像添加自定義元數(shù)據(jù)。

備注維護(hù)者信息有助于為該鏡像的潛在使用者提供溝通途徑,這是一種值得提倡的做法。

RUN apk add --update nodejs nodejs-npm 指令使用 alpine 的 apk 包管理器將 nodejs 和 nodejs-npm 安裝到當(dāng)前鏡像之中。

RUN 指令會在 FROM 指定的 alpine 基礎(chǔ)鏡像之上,新建一個鏡像層來存儲這些安裝內(nèi)容。當(dāng)前鏡像的結(jié)構(gòu)如下圖所示。

COPY. / src 指令將應(yīng)用相關(guān)文件從構(gòu)建上下文復(fù)制到了當(dāng)前鏡像中,并且新建一個鏡像層來存儲。COPY 執(zhí)行結(jié)束之后,當(dāng)前鏡像共包含 3 層,如下圖所示。

下一步,Dockerfile 通過 WORKDIR 指令,為 Dockerfile 中尚未執(zhí)行的指令設(shè)置工作目錄。

該目錄與鏡像相關(guān),并且會作為元數(shù)據(jù)記錄到鏡像配置中,但不會創(chuàng)建新的鏡像層。

然后,RUN npm install 指令會根據(jù) package.json 中的配置信息,使用 npm 來安裝當(dāng)前應(yīng)用的相關(guān)依賴包。

npm 命令會在前文設(shè)置的工作目錄中執(zhí)行,并且在鏡像中新建鏡像層來保存相應(yīng)的依賴文件。

目前鏡像一共包含 4 層,如下圖所示。

因為當(dāng)前應(yīng)用需要通過 TCP 端口 8080 對外提供一個 Web 服務(wù),所以在 Dockerfile 中通過 EXPOSE 8080 指令來完成相應(yīng)端口的設(shè)置。

這個配置信息會作為鏡像的元數(shù)據(jù)被保存下來,并不會產(chǎn)生新的鏡像層。

最終,通過 ENTRYPOINT 指令來指定當(dāng)前鏡像的入口程序。ENTRYPOINT 指定的配置信息也是通過鏡像元數(shù)據(jù)的形式保存下來,而不是新增鏡像層。

⒊ 容器化當(dāng)前應(yīng)用/構(gòu)建具體的鏡像

到目前為止,應(yīng)該已經(jīng)了解基本的原理和流程,接下來是時候嘗試構(gòu)建自己的鏡像了。

下面的命令會構(gòu)建并生成一個名為 web:latest 的鏡像。命令最后的點(.)表示 Docker 在進(jìn)行構(gòu)建的時候,使用當(dāng)前目錄作為構(gòu)建上下文。

一定要在命令最后包含這個點,并且在執(zhí)行命令前,要確認(rèn)當(dāng)前目錄是 psweb(包含 Dockerfile 和應(yīng)用代碼的目錄)。

命令執(zhí)行結(jié)束后,檢查本地 Docker 鏡像庫是否包含了剛才構(gòu)建的鏡像。

$ docker image ls
REPO TAG IMAGE ID CREATED SIZE
web latest fc69fdc4c18e 10 seconds ago 64.4MB

恭喜,應(yīng)用容器化已經(jīng)成功了!

讀者可以通過 docker image inspect web:latest 來確認(rèn)剛剛構(gòu)建的鏡像配置是否正確。這個命令會列出 Dockerfile 中設(shè)置的所有配置項。

⒋ 推送鏡像到倉庫

在創(chuàng)建一個鏡像之后,將其保存在一個鏡像倉庫服務(wù)是一個不錯的方式。這樣存儲鏡像會比較安全,并且可以被其他人訪問使用。

Docker Hub 就是這樣的一個開放的公共鏡像倉庫服務(wù),并且這也是docker image push 命令默認(rèn)的推送地址。

在推送鏡像之前,需要先使用 Docker ID 登錄 Docker Hub。除此之外,還需要為待推送的鏡像打上合適的標(biāo)簽。

接下來介紹一下如何登錄 Docker Hub,并將鏡像推送到其中。

在后續(xù)的例子中,需要用自己的 Docker ID 替換示例中所使用的 ID。所以每當(dāng)看到“nigelpoulton”時,記得替換為自己的 Docker ID。

$ docker login
Login with **your** Docker ID to push and pull images from Docker Hub...
Username: nigelpoulton
Password:
Login Succeeded

推送 Docker 鏡像之前,還需要為鏡像打標(biāo)簽。這是因為 Docker 在鏡像推送的過程中需要如下信息。

? Registry(鏡像倉庫服務(wù))。

? Repository(鏡像倉庫)。

? Tag(鏡像標(biāo)簽)。

無須為 Registry 和 Tag 指定值。當(dāng)沒有為上述信息指定具體值的時候,Docker 會默認(rèn) Registry=docker.io、Tag=latest。

但是 Docker 并沒有給 Repository 提供默認(rèn)值,而是從被推送鏡像中的 REPOSITORY 屬性值獲取。

這一點可能不好理解,下面會通過一個完整的例子來介紹如何向 Docker Hub 中推送一個鏡像。

在前面的例子中執(zhí)行了 docker image ls 命令。在該命令對應(yīng)的輸出內(nèi)容中可以看到,鏡像倉庫的名稱是 web。

這意味著執(zhí)行 docker image push 命令,會嘗試將鏡像推送到 docker.io/web:latest 中。

但是其實 nigelpoulton 這個用戶并沒有 web 這個鏡像倉庫的訪問權(quán)限,所以只能嘗試推送到 nigelpoulton 這個二級命名空間(Namespace)之下。

因此需要使用 nigelpoulton 這個 ID,為當(dāng)前鏡像重新打一個標(biāo)簽。

$ docker image tag web:latest nigelpoulton/web:latest

為鏡像打標(biāo)簽命令的格式是docker image tag<current-tag> <new-tag> ,其作用是為指定的鏡像添加一個額外的標(biāo)簽,并且不需要覆蓋已經(jīng)存在的標(biāo)簽。

再次執(zhí)行 docker image ls 命令,可以看到這個鏡像現(xiàn)在有了兩個標(biāo)簽,其中一個包含 Docker ID nigelpoulton。

$ docker image ls
REPO TAG IMAGE ID CREATED SIZE
web latest fc69fdc4c18e 10 secs ago 64.4MB
nigelpoulton/web latest fc69fdc4c18e 10 secs ago 64.4MB

現(xiàn)在將該鏡像推送到 Docker Hub。

$ docker image push nigelpoulton/web:latest
The push refers to repository [docker.io/nigelpoulton/web]
2444b4ec39ad: Pushed
ed8142d2affb: Pushed
d77e2754766d: Pushed
cd7100a72410: Mounted from library/alpine
latest: digest: sha256:68c2dea730...f8cf7478 size: 1160

下圖展示了 Docker 如何確定鏡像所要推送的目的倉庫。

因為權(quán)限問題,所以需要把上面例子中出現(xiàn)的 ID(nigelpoulton)替換為自己的 Docker ID,才能進(jìn)行推送操作。

在接下來的例子當(dāng)中,將使用 web:latest 這個標(biāo)簽。

⒌ 運(yùn)行應(yīng)用程序

前文中容器化的這個應(yīng)用程序其實很簡單,從 app.js 這個文件內(nèi)容中可以看出,這其實就是一個在 8080 端口提供 Web 服務(wù)的應(yīng)用程序。

下面的命令會基于 web:latest 這個鏡像,啟動一個名為 c1 的容器。該容器將內(nèi)部的 8080 端口與 Docker 主機(jī)的 80 端口進(jìn)行映射。

這意味讀者可以打開一個瀏覽器,在地址欄輸入 Docker 主機(jī)的 DNS 名稱或者 IP 地址,然后就能直接訪問這個 Web 應(yīng)用了。

如果 Docker 主機(jī)已經(jīng)運(yùn)行了某個使用 80 端口的應(yīng)用程序,讀者可以在執(zhí)行 docker container run 命令時指定一個不同的映射端口。例如,可以使用 -p 5000:8080 參數(shù),將 Docker 內(nèi)部應(yīng)用程序的 8080 端口映射到主機(jī)的 5000 端口。

$ docker container run -d --name c1 \
-p 80:8080 \
web:latest

-d 參數(shù)的作用是讓應(yīng)用程序以守護(hù)線程的方式在后臺運(yùn)行。

-p 80:8080 參數(shù)的作用是將主機(jī)的80端口與容器內(nèi)的8080端口進(jìn)行映射。

接下來驗證一下程序是否真的成功運(yùn)行,并且對外提供服務(wù)的端口是否正常工作。

$ docker container ls

ID IMAGE COMMAND STATUS PORTS
49.. web:latest "node ./app.js" UP 6 secs 0.0.0.0:80->8080/tcp

為了方便閱讀,只截取了命令輸出內(nèi)容的一部分。從上面的輸出內(nèi)容中可以看到,容器已經(jīng)正常運(yùn)行。需要注意的是,80端口已經(jīng)成功映射到了 8080 之上,并且任意外部主機(jī)(0.0.0.0:80)均可以通過 80 端口訪問該容器。

⒍ APP測試

打開瀏覽器,在地址欄輸入 DNS 名稱或者 IP 地址,就能訪問到正在運(yùn)行的應(yīng)用程序了。可以看到下圖所示的界面。

如果沒有出現(xiàn)這樣的界面,嘗試執(zhí)行下面的檢查來確認(rèn)原因所在。

使用 docker container ls指令來確認(rèn)容器已經(jīng)啟動并且正常運(yùn)行。容器名稱是c1,并且從輸出內(nèi)容中能看到 0.0.0.0:80->8080/tcp。

確認(rèn)防火墻或者其他網(wǎng)絡(luò)安全設(shè)置沒有阻止訪問 Docker 主機(jī)的 80 端口。

如此,應(yīng)用程序已經(jīng)容器化并成功運(yùn)行了。

⒎ 詳述

到現(xiàn)在為止,應(yīng)當(dāng)成功完成一個示例應(yīng)用程序的容器化。下面是其中一些細(xì)節(jié)部分的回顧和總結(jié)。

Dockerfile 中的注釋行,都是以#開頭的。

除注釋之外,每一行都是一條指令(Instruction)。指令的格式是指令參數(shù)如下。

INSTRUCTION argument

指令是不區(qū)分大小寫的,但是通常都采用大寫的方式。這樣 Dockerfile 的可讀性會高一些。

Docker image build命令會按行來解析 Dockerfile 中的指令并順序執(zhí)行。

部分指令會在鏡像中創(chuàng)建新的鏡像層,其他指令只會增加或修改鏡像的元數(shù)據(jù)信息。

在上面的例子當(dāng)中,新增鏡像層的指令包括 FROM、RUN 以及 COPY,而新增元數(shù)據(jù)的指令包括 EXPOSE、WORKDIR、ENV以 及 ENTERPOINT。

關(guān)于如何區(qū)分命令是否會新建鏡像層,一個基本的原則是,如果指令的作用是向鏡像中增添新的文件或者程序,那么這條指令就會新建鏡像層;如果只是告訴 Docker 如何完成構(gòu)建或者如何運(yùn)行應(yīng)用程序,那么就只會增加鏡像的元數(shù)據(jù)。

可以通過docker image history 來查看在構(gòu)建鏡像的過程中都執(zhí)行了哪些指令。

在上面的輸出內(nèi)容當(dāng)中,有兩點是需要注意的。

首先,每行內(nèi)容都對應(yīng)了 Dockerfile 中的一條指令(順序是自下而上)。CREATE BY 這一列中還展示了當(dāng)前行具體對應(yīng) Dockerfile 中的哪條指令。

其次,從這個輸出內(nèi)容中,可以觀察到只有 4 條指令會新建鏡像層(就是那些 SIZE 列對應(yīng)的數(shù)值不為零的指令),分別對應(yīng) Dockerfile 中的 FROM、RUN 以及 COPY 指令。

雖然其他指令看上去跟這些新建鏡像層的指令并無區(qū)別,但實際上它們只在鏡像中新增了元數(shù)據(jù)信息。這些指令之所以看起來沒有區(qū)別,是因為 Docker 對之前構(gòu)建鏡像層方式的兼容。

可以通過執(zhí)行 docker image inspect 指令來確認(rèn)確實只有 4 個層被創(chuàng)建了。

$ docker image inspect web:latest
<Snip>
},
"RootFS": {
"Type": "layers",
"Layers": [
    "sha256:cd7100...1882bd56d263e02b6215",
    "sha256:b3f88e...cae0e290980576e24885",
    "sha256:3cfa21...cc819ef5e3246ec4fe16",
    "sha256:4408b4...d52c731ba0b205392567"
]
},

使用 FROM 指令引用官方基礎(chǔ)鏡像是一個很好的習(xí)慣,這是因為官方的鏡像通常會遵循一些最佳實踐,并且能幫助使用者規(guī)避一些已知的問題。

除此之外,使用 FROM 的時候選擇一個相對較小的鏡像文件通常也能避免一些潛在的問題。

通過 docker image build 命令具體的輸出內(nèi)容,可以了解鏡像構(gòu)建的過程。

在下面的片段中,可以看到基本的構(gòu)建過程是,運(yùn)行臨時容器 -> 在該容器中運(yùn)行 Dockerfile 中的指令 -> 將指令運(yùn)行結(jié)果保存為一個新的鏡像層 -> 刪除臨時容器。

Step 3/8 : RUN apk add --update nodejs nodejs-npm
---> Running in e690ddca785f << Run inside of temp container
fetch http://dl-cdn...APKINDEX.tar.gz
fetch http://dl-cdn...APKINDEX.tar.gz
(1/10) Installing ca-certificates (20171114-r0)
<Snip>
OK: 61 MiB in 21 packages
---> c1d31d36b81f << Create new layer
Removing intermediate container << Remove temp container
Step 4/8 : COPY . /src

生產(chǎn)環(huán)境中的多階段構(gòu)建

對于 Docker 鏡像來說,過大的體積并不好!

越大則越慢,這就意味著更難使用,而且可能更加脆弱,更容易遭受攻擊。

鑒于此,Docker 鏡像應(yīng)該盡量小。對于生產(chǎn)環(huán)境鏡像來說,目標(biāo)是將其縮小到僅包含運(yùn)行應(yīng)用所必需的內(nèi)容即可。問題在于,生成較小的鏡像并非易事。

不同的 Dockerfile 寫法就會對鏡像的大小產(chǎn)生顯著影響。

常見的例子是,每一個 RUN 指令會新增一個鏡像層。因此,通過使用 && 連接多個命令以及使用反斜杠(\)換行的方法,將多個命令包含在一個 RUN 指令中,通常來說是一種值得提倡的方式。

另一個問題是開發(fā)者通常不會在構(gòu)建完成后進(jìn)行清理。當(dāng)使用 RUN 執(zhí)行一個命令時,可能會拉取一些構(gòu)建工具,這些工具會留在鏡像中移交至生產(chǎn)環(huán)境。

有多種方式來改善這一問題——比如常見的是采用建造者模式(Builder Pattern)。但無論采用哪種方式,通常都需要額外的培訓(xùn),并且會增加構(gòu)建的復(fù)雜度。

建造者模式需要至少兩個 Dockerfile,一個用于開發(fā)環(huán)境,一個用于生產(chǎn)環(huán)境。

首先需要編寫 Dockerfile.dev,它基于一個大型基礎(chǔ)鏡像(Base Image),拉取所需的構(gòu)建工具,并構(gòu)建應(yīng)用。

接下來,需要基于 Dockerfile.dev 構(gòu)建一個鏡像,并用這個鏡像創(chuàng)建一個容器。

這時再編寫 Dockerfile.prod,它基于一個較小的基礎(chǔ)鏡像開始構(gòu)建,并從剛才創(chuàng)建的容器中將應(yīng)用程序相關(guān)的部分復(fù)制過來。

整個過程需要編寫額外的腳本才能串聯(lián)起來。

這種方式是可行的,但是比較復(fù)雜。

多階段構(gòu)建(Multi-Stage Build)是一種更好的方式!

多階段構(gòu)建能夠在不增加復(fù)雜性的情況下優(yōu)化構(gòu)建過程。

下面介紹一下多階段構(gòu)建方式。

多階段構(gòu)建方式使用一個 Dockerfile,其中包含多個 FROM 指令。每一個 FROM 指令都是一個新的構(gòu)建階段(Build Stage),并且可以方便地復(fù)制之前階段的構(gòu)件。

示例源碼可從百度網(wǎng)盤獲取(https://pan.baidu.com/s/1M2paPY0f0lE5wm48HBk-Zw 提取碼: 2e7s ),Dockerfile 位于app目錄。

這是一個基于 Linux 系統(tǒng)的應(yīng)用,因此只能運(yùn)行在 Linux 容器環(huán)境上。

Dockerfile 如下所示。

FROM node:latest AS storefront
WORKDIR /usr/src/atsea/app/react-app
COPY react-app .
RUN npm install
RUN npm run build

FROM maven:latest AS appserver
WORKDIR /usr/src/atsea
COPY pom.xml .
RUN mvn -B -f pom.xml -s /usr/share/maven/ref/settings-docker.xml dependency
\:resolve
COPY . .
RUN mvn -B -s /usr/share/maven/ref/settings-docker.xml package -DskipTests

FROM java:8-jdk-alpine AS production
RUN adduser -Dh /home/gordon gordon
WORKDIR /static
COPY --from=storefront /usr/src/atsea/app/react-app/build/ .
WORKDIR /app
COPY --from=appserver /usr/src/atsea/target/AtSea-0.0.1-SNAPSHOT.jar .
ENTRYPOINT ["java", "-jar", "/app/AtSea-0.0.1-SNAPSHOT.jar"]
CMD ["--spring.profiles.active=postgres"]

首先注意到,Dockerfile 中有 3 個 FROM 指令。每一個 FROM 指令構(gòu)成一個單獨的構(gòu)建階段。

各個階段在內(nèi)部從 0 開始編號。不過,示例中針對每個階段都定義了便于理解的名字。

? 階段 0 叫作 storefront。

? 階段 1 叫作 appserver。

? 階段 2 叫作 production。

storefront 階段拉取了大小超過 600MB 的 node:latest 鏡像,然后設(shè)置了工作目錄,復(fù)制一些應(yīng)用代碼進(jìn)去,然后使用 2 個 RUN 指令來執(zhí)行 npm 操作。

這會生成 3 個鏡像層并顯著增加鏡像大小。指令執(zhí)行結(jié)束后會得到一個比原鏡像大得多的鏡像,其中包含許多構(gòu)建工具和少量應(yīng)用程序代碼。

appserver 階段拉取了大小超過 700MB 的 maven:latest 鏡像。然后通過 2 個 COPY 指令和 2 個 RUN 指令生成了 4 個鏡像層。

這個階段同樣會構(gòu)建出一個非常大的包含許多構(gòu)建工具和非常少量應(yīng)用程序代碼的鏡像。

production 階段拉取 java:8-jdk-alpine 鏡像,這個鏡像大約 150MB,明顯小于前兩個構(gòu)建階段用到的 node 和 maven 鏡像。

這個階段會創(chuàng)建一個用戶,設(shè)置工作目錄,從 storefront 階段生成的鏡像中復(fù)制一些應(yīng)用代碼過來。

之后,設(shè)置一個不同的工作目錄,然后從 appserver 階段生成的鏡像中復(fù)制應(yīng)用相關(guān)的代碼。最后,production 設(shè)置當(dāng)前應(yīng)用程序為容器啟動時的主程序。

重點在于 COPY --from 指令,它從之前的階段構(gòu)建的鏡像中僅復(fù)制生產(chǎn)環(huán)境相關(guān)的應(yīng)用代碼,而不會復(fù)制生產(chǎn)環(huán)境不需要的構(gòu)件。

還有一點也很重要,多階段構(gòu)建這種方式僅用到了一個 Dockerfile,并且 docker image build 命令不需要增加額外參數(shù)。

下面演示一下構(gòu)建操作??寺〈a庫并切換到 app 目錄,并確保其中有 Dockerfile。

$ cd atsea-sample-shop-app/app

$ ls -l
total 24
-rw-r--r-- 1 root root 682 Oct 1 22:03 Dockerfile
-rw-r--r-- 1 root root 4365 Oct 1 22:03 pom.xml
drwxr-xr-x 4 root root 4096 Oct 1 22:03 react-app
drwxr-xr-x 4 root root 4096 Oct 1 22:03 src

執(zhí)行構(gòu)建(這可能會花費(fèi)幾分鐘)。

$ docker image build -t multi:stage .

Sending build context to Docker daemon 3.658MB
Step 1/19 : FROM node:latest AS storefront
latest: Pulling from library/node
aa18ad1a0d33: Pull complete
15a33158a136: Pull complete
<Snip>
Step 19/19 : CMD --spring.profiles.active=postgres
---> Running in b4df9850f7ed
---> 3dc0d5e6223e
Removing intermediate container b4df9850f7ed
Successfully built 3dc0d5e6223e
Successfully tagged multi:stage

示例中 multi:stage 標(biāo)簽是自行定義的,可以根據(jù)自己的需要和規(guī)范來指定標(biāo)簽名稱。不過并不要求一定必須為多階段構(gòu)建指定標(biāo)簽。

執(zhí)行 docker image ls 命令查看由構(gòu)建命令拉取和生成的鏡像。

$ docker image ls

REPO TAG IMAGE ID CREATED SIZE
node latest 9ea1c3e33a0b 4 days ago 673MB
<none> <none> 6598db3cefaf 3 mins ago 816MB
maven latest cbf114925530 2 weeks ago 750MB
<none> <none> d5b619b83d9e 1 min ago 891MB
java 8-jdk-alpine 3fd9dd82815c 7 months ago 145MB
multi stage 3dc0d5e6223e 1 min ago 210MB

輸出內(nèi)容的第一行顯示了在 storefront 階段拉取的 node:latest 鏡像,下一行內(nèi)容為該階段生成的鏡像(通過添加代碼,執(zhí)行 npm 安裝和構(gòu)建操作生成該鏡像)。

這兩個都包含許多的構(gòu)建工具,因此鏡像體積非常大。

第 3~4 行是在 appserver 階段拉取和生成的鏡像,它們也都因為包含許多構(gòu)建工具而導(dǎo)致體積較大。

最后一行是 Dockerfile 中的最后一個構(gòu)建階段(stage2/production)生成的 multi:stage 鏡像。

可見它明顯比之前階段拉取和生成的鏡像要小。這是因為該鏡像是基于相對精簡的 java:8-jdk-alpine 鏡像構(gòu)建的,并且僅添加了用于生產(chǎn)環(huán)境的應(yīng)用程序文件。

最終,無須額外的腳本,僅對一個單獨的 Dockerfile 執(zhí)行 docker image build 命令,就創(chuàng)建了一個精簡的生產(chǎn)環(huán)境鏡像。

多階段構(gòu)建是隨 Docker 17.05 版本新增的一個特性,用于構(gòu)建精簡的生產(chǎn)環(huán)境鏡像。

最佳實踐

下面介紹一些最佳實踐。

⒈ 利用構(gòu)建緩存

Docker 的構(gòu)建過程利用了緩存機(jī)制。觀察緩存效果的一個方法,就是在一個干凈的 Docker 主機(jī)上構(gòu)建一個新的鏡像,然后再重復(fù)同樣的構(gòu)建。

第一次構(gòu)建會拉取基礎(chǔ)鏡像,并構(gòu)建鏡像層,構(gòu)建過程需要花費(fèi)一定時間;第二次構(gòu)建幾乎能夠立即完成。

這就是因為第一次構(gòu)建的內(nèi)容(如鏡像層)能夠被緩存下來,并被后續(xù)的構(gòu)建過程復(fù)用。

docker image build 命令會從頂層開始解析 Dockerfile 中的指令并逐行執(zhí)行。而對每一條指令,Docker 都會檢查緩存中是否已經(jīng)有與該指令對應(yīng)的鏡像層。

如果有,即為緩存命中(Cache Hit),并且會使用這個鏡像層;如果沒有,則是緩存未命中(Cache Miss),Docker 會基于該指令構(gòu)建新的鏡像層。

緩存命中能夠顯著加快構(gòu)建過程。

下面通過實例演示其效果。

示例用的 Dockerfile 如下。

FROM alpine
RUN apk add --update nodejs nodejs-npm
COPY . /src
WORKDIR /src
RUN npm install
EXPOSE 8080
ENTRYPOINT ["node", "./app.js"]

第一條指令告訴 Docker 使用 alpine:latest 作為基礎(chǔ)鏡像。

如果主機(jī)中已經(jīng)存在這個鏡像,那么構(gòu)建時會直接跳到下一條指令;如果鏡像不存在,則會從 Docker Hub(docker.io)拉取。

下一條指令(RUN apk...)對鏡像執(zhí)行一條命令。

此時,Docker 會檢查構(gòu)建緩存中是否存在基于同一基礎(chǔ)鏡像,并且執(zhí)行了相同指令的鏡像層。

在此例中,Docker 會檢查緩存中是否存在一個基于 alpine:latest 鏡像且執(zhí)行了 RUN apk add --update nodejs nodejs-npm 指令構(gòu)建得到的鏡像層。

如果找到該鏡像層,Docker 會跳過這條指令,并鏈接到這個已經(jīng)存在的鏡像層,然后繼續(xù)構(gòu)建;如果無法找到符合要求的鏡像層,則設(shè)置緩存無效并構(gòu)建該鏡像層。

此處“設(shè)置緩存無效”作用于本次構(gòu)建的后續(xù)部分。也就是說 Dockerfile 中接下來的指令將全部執(zhí)行而不會再嘗試查找構(gòu)建緩存。

假設(shè) Docker 已經(jīng)在緩存中找到了該指令對應(yīng)的鏡像層(緩存命中),并且假設(shè)這個鏡像層的 ID 是 AAA。

下一條指令會復(fù)制一些代碼到鏡像中(COPY . /src)。因為上一條指令命中了緩存,Docker 會繼續(xù)查找是否有一個緩存的鏡像層也是基于 AAA 層并執(zhí)行了 COPY . /src 命令。

如果有,Docker 會鏈接到這個緩存的鏡像層并繼續(xù)執(zhí)行后續(xù)指令;如果沒有,則構(gòu)建鏡像層,并對后續(xù)的構(gòu)建操作設(shè)置緩存無效。

假設(shè) Docker 已經(jīng)有一個對應(yīng)該指令的緩存鏡像層(緩存命中),并且假設(shè)這個鏡像層的 ID 是 BBB。

那么 Docker 將繼續(xù)執(zhí)行 Dockerfile 中剩余的指令。

理解以下幾點很重要。

首先,一旦有指令在緩存中未命中(沒有該指令對應(yīng)的鏡像層),則后續(xù)的整個構(gòu)建過程將不再使用緩存。

在編寫 Dockerfile 時須特別注意這一點,盡量將易于發(fā)生變化的指令置于 Dockerfile 文件的后方執(zhí)行。

這意味著緩存未命中的情況將直到構(gòu)建的后期才會出現(xiàn),從而構(gòu)建過程能夠盡量從緩存中獲益。

通過對 docker image build 命令加入 --nocache=true 參數(shù)可以強(qiáng)制忽略對緩存的使用。

還有一點也很重要,那就是 COPY 和 ADD 指令會檢查復(fù)制到鏡像中的內(nèi)容自上一次構(gòu)建之后是否發(fā)生了變化。

例如,有可能 Dockerfile 中的 COPY . /src 指令沒有發(fā)生變化,但是被復(fù)制的目錄中的內(nèi)容已經(jīng)發(fā)生變化了。

為了應(yīng)對這一問題,Docker 會計算每一個被復(fù)制文件的 Checksum 值,并與緩存鏡像層中同一文件的 checksum 進(jìn)行對比。如果不匹配,那么就認(rèn)為緩存無效并構(gòu)建新的鏡像層。

⒉ 合并鏡像

合并鏡像并非一個最佳實踐,因為這種方式利弊參半。

總體來說,Docker 會遵循正常的方式構(gòu)建鏡像,但之后會增加一個額外的步驟,將所有的內(nèi)容合并到一個鏡像層中。

當(dāng)鏡像中層數(shù)太多時,合并是一個不錯的優(yōu)化方式。例如,當(dāng)創(chuàng)建一個新的基礎(chǔ)鏡像,以便基于它來構(gòu)建其他鏡像的時候,這個基礎(chǔ)鏡像就最好被合并為一層。

缺點是,合并的鏡像將無法共享鏡像層。這會導(dǎo)致存儲空間的低效利用,而且 push 和 pull 操作的鏡像體積更大。

執(zhí)行 docker image build命令時,可以通過增加 --squash 參數(shù)來創(chuàng)建一個合并的鏡像。

下圖闡釋了合并鏡像層帶來的存儲空間低效利用的問題。

兩個鏡像的內(nèi)容是完全一樣的,區(qū)別在于是否進(jìn)行了合并。在使用 docker image push 命令發(fā)送鏡像到 Docker Hub 時,合并的鏡像需要發(fā)送全部字節(jié),而不合并的鏡像只需要發(fā)送不同的鏡像層即可。

⒊ 使用 no-install-recommends

在構(gòu)建 Linux 鏡像時,若使用的是 APT 包管理器,則應(yīng)該在執(zhí)行 apt-get install 命令時增加 no-install-recommends 參數(shù)。

這能夠確保 APT 僅安裝核心依賴(Depends 中定義)包,而不是推薦和建議的包。這樣能夠顯著減少不必要包的下載數(shù)量。

⒋ 不要安裝 MSI 包(Windows)

在構(gòu)建 Windows 鏡像時,盡量避免使用 MSI 包管理器。因其對空間的利用率不高,會大幅增加鏡像的體積。

全部教程
在线免费看亚洲精品少妇69式| 亚洲av网站在线免费观看| 婷婷亚洲综合在线五月天| 日韩av卡一卡二卡三| 91精选视频在线播放| 国产精品精品3d动漫| 久久人人爽人人爽人人亚洲| 香蕉影视在线观看av最新| 日韩性爱视频无码三级片| 99国产精品免费视频观看a| 67194久久一区二区| 久久精品视频全部视频在线| 美女吃鸡巴黑料破处自慰| 成av一区二区三区久久| 不卡黄色免费在线观看| 人妻少妇精品视频专区vr| 97免费人妻超碰97在线| 阿v视频在线观看免费播放| 男生日女生逼的视频| 97人妻人人做人碰人人爽一| 伊人精品在线大香蕉| 99精品视频在线观看专区| 看男破处女人逼黄色片观看| 漂亮人妻被强制中出| 男女啪啪啪网站入口| 98久久久久98久久久久| 男人把女人捅爽动漫| 中文字幕亚洲日韩第一页| 自拍偷拍亚洲黄色照片| 五月婷婷免费在线观看视频| 嗯嗯嗯啊啊啊不要好爽视频| 中文字幕 日韩在线播放| 蜜桃一区二区17c| 亚洲人成小说网站色在线| 制服丝袜诱惑综合网| 一级白丝美女久久久久| 亚洲自偷自拍另类性受不了| 日韩成人综艺在线播放| 勾引小哥鸡巴操逼视频下载| 国产精品久久久久白浆| 成人大片免费看45分钟| 亚洲熟妇av一区二区蜜桃第1集 | 91大神视频在线观看视频| 在线看片1024你懂得| 亚洲图片一区偷拍自拍| 日本一区二区不卡电影| 国产午夜福利精品久久不卡| 亚洲欧美另类激情综合区动漫| 日韩一区二区视频在线看| 欧美日韩国产综合不卡| 久久久999精品在线| 久久精精品久久久噜噜| 女人样男人用大鸡巴操她的逼逼| 婷婷av一区二区三区7| 成人大片免费看45分钟| 亚洲av网站在线免费观看| 婷婷丁香花综合激情五月天| 精品无人区高清免费看| 欧美一级黄片视频免费| 国产高清免费在线视频| 91精品综合国产熟女| 国产极品尤物粉嫩泬在线观看| 少妇人妻中文字幕专区视频| 亚洲 欧美在线视频| 青娱乐精品视频在线免费观看| 亚洲精品 国产成人| av乱亚洲一区二区三区| 中文字幕久久精品亚洲乱码| 91免费观看国产精品| 欧美视频精品免费观看| 国产美女高清免费av| 亚洲另类欧美在线观看| 天天色天天情天天透| 99久久香蕉国产线看| 国产传媒网址在线观看| 亚洲精品综合视频自拍| 日本少妇人妻久久中文| 怡红院精彩视频在线观看| 超碰在线观看97视频| 91人妻人澡人人爽人人精品 | 日韩性爱视频无码三级片| 成人麻豆免费视频精品区| 91表用白丝脚帮我脚交| 在线观看国产精品123| 午夜福利免费福利视频| 久久三级片一区二区毛片| 国产av在线一区二区| 亚洲在线一区二区三区免费| 欧美色一区二区三区在线观看| 国产超碰人人爽人人做夜色资源| 看男破处女人逼黄色片观看| 99久久免费国产特黄| 国语对白xxxx乱大交| 91亚洲国产成人久久| 日韩毛片基地免费看| 免费一级黄色片麻豆系列| 成人麻豆免费视频精品区| 98久久久久98久久久久| 亚洲视频 中文字幕 人妻| 男女啪啪啪网站入口| 午夜精品久久99蜜桃| 成全视频免费观看在线下载| 不卡精品国产_亚洲人成在线| 国产剧情swag在线观看| 久久综合色——久久综合色88| 欧美va久久久噜噜噜久久| 欧美 日韩 中文 字幕| 精品欧美一亚洲精品午夜| 久久中文字幕av观看| 97国产在线精品观看| 男女精品久久久久久久久久| 日韩一区二区视频在线看 | 欧美丝袜熟女日韩亚洲| 成人福利视频一区二区| 91 chinese 在线播放| 欧美大长腿美女抽插网站| 超碰在线观看97视频| 91精品综合国产熟女| 亚洲av性色在线观看黄色| 国产亚洲精品天堂在线观看| 操人妻视频在线免费观看| 亚洲欧美区二区三区| 98资源站精品视频在线观看| 欧洲av,亚洲av| 成人黄色大全在线观看| 啊啊啊操死我轮操视频免费| 国产亚洲精品电影aa在线观看| 欧美1234不卡视频| 老司机免费福利视频网| 免费观看视频一区,二区,三区| 国产精品爽黄69天堂ai蜜乳| 最新人妻熟女中文字幕| 人人咪咪一区二区三区| 福利视频国产在线在线观看| 亚洲性趣老熟妇高清| 东京热av在线播放| 东北老熟女疯狂作爱视频| 182tv在线福利视频| 久久久国产视频91| 日本性少妇xxxx| 国产福利中文字幕导航| 青青草原亚洲精品在线观看| 天天日天天看天天摸| 成人黄色大全在线观看| 亚洲av网站在线免费观看| 欧美av色香蕉一区二区小说| 狂野黑人性猛交xxxxxx| 极品国模sm镣铐调教| 91人妻精品动漫一区二区三区| 大吊插入素人骚穴内射视频播放| 久国产一二三区四区乱码2021| 人人妻人人妻人人妻精品| 亚洲综合精品推荐69堂| 久久久久国产一毛片高清| 天天色天天爱天天舔| 青娱乐精品视频在线免费观看| 国产情侣激情在线对白| 2018免费天天干夜夜操| 中国福利在线黄色片| 亚洲va欧美va人人爽午夜| 韩国美女主播福利视频| 国产原创成人av剧情在线播放| 老司机免费福利视频网| 黄色av免费下载软件| 国产乱子伦一区=区三区| 综合久久天天搞天天]| 国产绿帽人妻精品系列| 亚洲精品乱码久久观看网| 日韩国产精品高清中文在线| 男人爽爽女人的视频一区二区三区| 亚洲一区二区综合网| 国产黑色丝袜视频在线观看下| 超碰人妻中文字幕在线| 国产一级免费黄色录像片| 久久精品国产二区AV无码| 又黑又硬又粗又黄又猛| av在线手机观看一区二区三区| 夜夜操夜夜操夜夜爽| 福利一区二区在线视频| 教资是不是人人都可以考| 欧美一级黄片视频免费| 丝袜美腿国产在线观看| 啪啪在线视频免费观看| 好男人资源在线视频观看社区| av一区二区二十四小时| 日本女护士久久精品| 精品熟女后入一区二区三区| 漂亮的人妻不敢呻吟被中出| 亚洲精品一区二区三区新线路| 免费高清视频在线观看不卡男男| 狠狠躁日日躁夜夜躁视频| 日韩无码成人电影一区二区| 日本片免费a在线观看| 午夜啪啪啪免费视频网站| 国产精品视频白浆免费网站| 免费成人中文字幕电影| 91麻豆精品一二三区在线成人| 亚洲人成青青操免费观看| 欧美丰满熟妇高潮xxxx| 亚洲人成青青操免费观看| 女人被男人阳具抽插的呻吟视频| 女人扒开逼逼让男人操| 免费阿v视频在线播放| 性感的人妻在线观看| 亚洲国产aⅴ成人精品无吗| www国产精品久久久久久| 亚洲国产精彩中文乱码av| 黄色中文字幕在线观看| 亚洲国产日韩欧美高清片vr| 大肉大捧一进一出免费视频网址| 天天色天天情天天透| 久久久999精品在线| 国产精品亚洲综合av| 操女人下阴黄色一级视频| 男的扒开女的下面狂操视频| 另类图片亚洲图区第一页| 欧美视频精品免费观看| 中文字幕亚洲日韩第一页| 91人妻人人做人人爽九色全集| 99精品老司机免费视频| 国产无遮挡精品视频观看| 免费观看视频一区,二区,三区| 久久久久18精品国产乱码78m| 亚洲精品专区一区二区| 婷婷色综合久久五月天| 亚洲精品成人原创视频| 熟女免费在线观看视频| 精品人妻欧美一区二区| 亚洲国产aⅴ成人精品无吗| 999热这里只有精品视频| 中文字幕亚洲日韩第一页| 久操av在线免费观看| av大片在线观看免费| 婷婷综合尤物精品国产| 亚洲人人妻一区二区三区| 成人a毛片久久免费播放| 国产三级做爰高清在线| 天天干天天日天天超| 999久久久无码精品免费看片| 91精品1080部在线播放| 久久精品视频全部视频在线| 天天插天天色天天透| 欧美成人a v在线| 在线视频无码理论片| 熟女人妻av中文字幕| 美女诱惑福利在线视频| 欧美福利专区一区二区三区| 久草视频免费在线视频观看| 成人麻豆免费视频精品区 | 97久久精品熟女超碰| av 在线 麻豆| 午夜男女激情福利视频| 天天爱天天日天天干天天做| 香蕉影视在线观看av最新| 久久综合色——久久综合色88| 中文字幕亚洲日韩第一页| 99精品视频在线观看专区| 美女草草影院在线观看视频| 操人妻视频在线免费观看| 欧美亚洲天堂不卡视频| 91久久国产丁香精品中文| 欧美日韩无卡一二三区| 国产欧美日韩一区91| 国产伦精品一区二区黑人| 神乃麻美三级在线观看视频| 福利一区二区在线视频| 亚洲综合另类小说色区色噜噜,| 起碰97视频在线播放| 超碰在线97人人草| x8x8免费在线观看视频| 一级黄色片美女吃春满| 亚洲av综合久久久久久| 青青草精品视频在线免费观看| 亚洲人成青青操免费观看| 操女人下阴黄色一级视频| 成人激情在线一区二区| 爆操嫩逼黑丝袜美女小骚逼| 日本中文字幕人妻一区二区| 久久性视频不卡网站| 欧美精品黑人粗大破除| 东游记中文字幕版哪里可以看到| 亚洲天堂都市激情av| 99久久久国产精品美女| 青青操在线视频精品| 偷拍自拍 中文字幕| 欧美黄色免费在线网站| 亚洲一区二区视频在线免费观看| 久久99精品久久久久久小说| 欧美熟妇亚洲中文不卡少妇| 少妇的激情夜夜爽爽爽爽爽| 欧美综合自拍亚洲综合图区逼欠插| 欧美精品第5页在线观看视频| 我用力操你在线视频| caoporn香蕉在线观看| 黄色av免费下载软件| 亚洲欧美另类专区第一页| 国产av一区二区三区天堂| 亚洲精品在线观看高清资源| 欧美一区二区三区乱轮| 熟女人妻av中文字幕| 亚洲精品超熟女av| 四川操bb操bb操b| 国产精品自拍亚洲春色| 成人a毛片久久免费播放| 亚洲va欧美va人人爽午夜| 色吊最新在线视频免费观看| 亚洲免费观看小视频| 自拍第一页免费视频| 蜜桃视频18在线观看| 成人黄色大全在线观看| 99久久久国产精品美女| 天天操天天摸天天摸| av网址在线观看日韩| 久久三级片一区二区毛片| 亚洲伊人av 综合福利| 2012在线国语中文字幕| 东方av在线免费进入| 最新亚洲成人黄色片| 粉嫩av入口一区二区三区| 狠狠躁日日躁夜夜躁视频| 可以免费看的黄页视频| 日本性感黑丝美女一区二区| av男人免费的天堂| 亚洲国产中文字幕在线视频| 国内精品久久久久久久999| xxxx在线免费观看视频| 亚洲国产欧美日韩国产| 成人性生交大免费三人| 欧美熟妇搡bbbb水蜜桃| 欧洲av性色在线看| 另类图片亚洲图区第一页| 久久中文字幕av观看| 99,九九,久久精品| 最新日韩成人毛片在线| 日日夜夜夜操天天干| 日本性少妇xxxx| 亚洲精品成人a8198| xxxx在线免费观看视频| 欧美日韩aaaaa级黄片视频| 青春草在线视频播放免费观看网站| 午夜国产福利视频一区二区| av男人免费的天堂| 最新亚洲成人黄色片| 综合久久天天搞天天]| 干 白虎 少妇 嫩 逼 视频| 午夜剧场欧美一区二区| 亚洲精品 国产成人| 欧美,日本中文高清视频| 偷拍亚洲另类图片视频| 丁香激情五月天综合网| 老师让我插进去69AV| 国产剧情星空无限传媒 | av中文字幕高清在线| 99热这里只有的精品666| 美女诱惑福利在线视频| 日本少妇精品bbwbbw| 国产又黄又粗又硬又大又猛的视频| 欧洲日韩视频一区二区三区| 四川操bb操bb操b| 国产日视频在线观看| 亚洲中文字幕在线观看黑人| 亚洲欧美日韩偷窥自拍| 在线精品亚洲区一区二区| 欧美综合一二区在线| 青娱乐精品视频在线免费观看| 精品午夜国产福利观看| 欧美午夜不卡一区二区三区| 亚洲自偷自拍另类18p| 午夜在线小视频在线观看| 在线视频你懂的视频| 最新天堂一区二区三区| 久久久久久久国产精品人妻| 色婷婷亚洲久久97成人| 超碰超碰超碰超碰超碰超| 婷婷亚洲综合在线五月天| av在线操亚洲图片| www国产亚洲天堂| 欧美 亚洲 激情 自拍| 日韩高清av一区二区三区| 俄罗斯第一次处破女| 婷婷综合尤物精品国产| 亚洲综合欧美熟一区| 女人看了很爽的一级女毛片| 成人一级黄色片免费看| 婷婷丁香花综合激情五月天| 91精品国产国语自拈产在| 人操美女操美女操美女| 国产av在线一区二区| 97人妻人人做人碰人人爽一| av网址大全在线播放| 欧美日韩无卡一二三区| 起碰97视频在线播放| 国产欧美精品va在线观看| 性感的人妻在线观看| 成人黄色大片免费网站| 99精品国产免费久久久久久| 免费成人中文字幕电影| 国产精品福利免费视频不卡| 色淫骚色色色色色色美女| 97人妻人人做人碰人人爽一| 欧美精品乱码久久久久久| 免费在线国产观看av| 天天干天天操天天日天天射| 午夜国产福利视频一区二区| 天天天天拍天天天天天天| 啪啪男女日韩网站蜜桃| 狂野小农民在线高清| youtube视频字幕中文| 亚洲国产日韩欧美在线观看| 亚洲一区 成人在线| 成人性生交大免费三人| 亚洲欧洲自拍他拍av| 啊啊啊操死我轮操视频免费| 亚洲成年人三级电影| 色片免费在线观看喷水| 天堂av在线中文在线新版| 熟女一区二区三区四区五区视频| 国产麻豆在线av| 最新亚洲成人黄色片| 男生的天堂亚洲男人| 可以免费看啪啪啪的网站| 国产一级二级三级亚洲| 浪荡人妻共32部分黑人| 美女草草影院在线观看视频| 日韩加勒比东京热二区| 日韩精选高清大片在线观看 | 东京热av在线播放| 亚洲精品在线观看高清资源| 色一伊人区二区亚洲最大| 美女吃鸡巴黑料破处自慰| 亚洲va欧美va人人爽午夜| 亚洲精品超熟女av| 久久久久久久久久久蜜桃| 成人午夜伦理在线观看| 欧美精品乱码久久久久久| 国产一区二区精品蜜臀av| 九九热在线这里只有精品| 漂亮人妻被强制中出| 日本熟妇丰满厨房55| 亚洲无码成人福利视频| 99精品国产自在现线观看| 青青操成人免费在线视频| 美女诱惑福利在线视频| www国产精品久久久久久| 四川操bb操bb操b| 久久这里精品视频3| 国产又黄又粗又硬又大又猛的视频| 三级三级三级日本99| 免费av区在线观看| 夭天曰天天躁东京热天天摸| 欧美在线免费污污视频| 欧美日韩aaaaa级黄片视频| 午夜精品不卡视频在线观看| 手机视频在线观看99精品视频| 自拍偷拍 中文字幕 日韩| 国产精品啊啊啊不要在线观看| 欧美综合自拍亚洲综合图区逼欠插 | 黄色污污污网站免费观看| 日本伦理在线免费视频| 在线视频一视频二视频三| 性感的人妻在线观看| 国产盗摄女子私密保健视频| 一级女人色又黄毛片女人| 亚洲天堂都市激情av| 欧美一级操逼啊啊啊哦哦哦| 亚洲精品超熟女av| 婷婷综合尤物精品国产| 97视频人人人人人性| 勾引小哥鸡巴操逼视频下载| 久久久久久久久久久蜜桃| 天天色天天干天天操| 麻豆一区二区大豆行情| 日韩av卡一卡二卡三| 国产美女遭高潮免费视频| 98视频在线免费观看| 亚洲欧美在线x视频| 日本免费啪啪啪啪啪啪啪啪啪啪| 999在线视频一区二区三区| 四川熟女a一区二区三区| 俄罗斯第一次处破女| 久久中文字幕av观看| 伊人大香线蕉亚洲五月天| 欧美图色 亚洲图色| 色噜噜在线综合亚洲欧美| 亚洲综合一区二区人妻| 国产精品久久久久白浆| 亚洲综合另类小说色区色噜噜,| 国产美女高清免费av| 91在线视频只有精品| 黑人精品一区a一二区b| 99久久99久久免费精品蜜臀| 成人熟女一区二区三区| 三上悠亚和黑人665番号| 黄色av日韩免费在线观看| 自拍偷拍 中文字幕 日韩| 国产欧美精品va在线观看| 久久精品国产亚洲av视瓶| 黑人精品一区a一二区b| 九月丁香婷婷中文字幕| 日本黄页网络站免费| 成人大片免费看45分钟| 欧美亚洲综合偷拍另类| www国产亚洲天堂| 91久久香蕉国产熟女| 久久这里精品视频3| 2020中文字幕在线播放| 国产又大又粗又硬又爽视频| 大吊插入素人骚穴内射视频播放| 国产精品爽黄69天堂ai蜜乳| 日韩欧美亚洲一区第一| 98视频在线免费观看| 超碰chaopeng 国产| 先锋资源在线观看国产精品| 97超碰在线视频观看 | 欧美视频在线观看18| 青青草精品视频在线免费观看| 9色自拍视频在线观看| 精品少妇人妻av免费久久胖妇| 性感的人妻在线观看| 欧美最猛黑人xxxx黑人猛交文| 三级黄色亚洲成人av| 国产剧情免费在线观看| 熟女一区二区三区四区五区视频 | 精品少妇人妻av免费久久胖妇| 在线看片1024你懂得| 欧美丰满熟妇高潮xxxx| 成人大片免费看45分钟| 男人爽爽女人的视频一区二区三区| 欧美三级一区二区三区四区五区| 亚洲av男人的天堂久久久| 新婚人妻聚会被中出| 亚洲自偷自拍另类性受不了| 一区二区中文字幕18| 男生用大鸡巴捅女生的视频| 日韩精品一区二区三区中文精| 啪啪啪免费亚洲精品网站 | 成人麻豆免费视频精品区| 日本免费播放一区二区三区 | 99久久香蕉国产线看| 亚洲欧洲自拍他拍av| 国产综合av一区二区| 日韩精品高清免费视频| 亚洲自拍偷拍清纯唯美| 国产c片免费观看| 97精品在线观看视频| 91亚洲国产成人久久| 在线免费看亚洲精品少妇69式| 天天色天天爱天天日| 亚洲欧美伦理一区二区| 瑟瑟的网站在线观看| 午夜剧场欧美一区二区| 182tv在线福利视频| 日本少妇精品bbwbbw| 国产黄a三级三级三级三级三级| 婷婷爱在线视频精品| 国产大神一区二区三区| 天天插天天爱天天日| 免费一级黄色片麻豆系列| 亚洲中文字幕av在线播放| 夜夜骑加勒比天天操| 少妇高潮精品一区二区| 77777蜜臀精品久久综合| 91在线视频只有精品| 福利视频国产在线在线观看| 在线免费观看欧美激情视频| 日日天天干夜夜夜操狠狠干| 免费熟女精品一区二区三区| 天天射天天日天天干天天舔| 日本老熟妇色狠狠一区| 自拍分享国产亚洲欧美| 隔壁老王国产在线观看| 久久躁夜夜躁日日躁狠狠躁| 中文字幕黄色av网址| 天天日天天添天天爽| 亚洲天堂 校园春色| 99麻豆精品国产自产在线观看| 美女吃鸡巴黑料破处自慰| 欧美色一区二区三区在线观看| 国产综合av一区二区| 国产大神一区二区三区| 久久精品在线观看免费视频| 国产免费av不卡免费| 成人大片免费看45分钟| 日本免费播放一区二区三区| 都市激情校园春色av| 日韩中文字幕乱码一区| 国产综合av免费观看| 亚洲综合久久综合网| 人妻天天操avxx| 天天大香蕉一区二区三区| 国产精品黄色自拍视频| 熟女免费在线观看视频| 黄片免费观看久久av| 美女草草影院在线观看视频| 久re这里只有精品视频| 中文字幕黄色av网址| 青青视频青青成人免费| 在线播放国产免费av| 亚洲视频专区在线播放| 91精彩刺激对白露脸偷拍| 亚洲欧美综合区丁香六月| 中文字幕久久精品亚洲乱码| 免费高清视频在线观看不卡男男| 88888欧美精品久久久| 99精品视频中文字幕| 96h久久国产激情| 在线观看免费a亚洲| 日韩中文字幕免费大片| 日本免费播放一区二区三区 | 老师让我插进去69AV| 亚洲图片一区偷拍自拍| 可以免费看啪啪啪的网站| 欧美1234不卡视频| 黑人精品一区a一二区b| 二亚洲女同性同志熟女| 亚洲综合一区二区人妻| 丁香激情五月天综合网| 久久躁夜夜躁日日躁狠狠躁| 偷拍自拍 中文字幕| suv精品一区二区6| 久久三级片一区二区毛片| 顶级销魂极品少妇在线观看| 欧美 日韩 中文 字幕| 一区二区三区国产精选在线播放| av一区二区二十四小时| 亚洲 网友 在线 观看| 黄色免费2b网页18岁有声音| 日本高清插阴视频免费| 人操美女操美女操美女| av国产在线观看网站| 国产大神一区二区三区| 九九热在线这里只有精品| 偷窥中国丰满多毛老熟女| 在线中文字幕综合一区| 制服丝袜诱惑综合网| 亚洲综合久久综合网| 精品欧美一亚洲精品午夜| 日韩av在线区二区| 91精彩刺激对白露脸偷拍| 动漫av纯肉免费在线观看| 国产精品爽黄69天堂ai蜜乳| 亚洲视频 中文字幕 人妻| 欧美日韩综合在线免费观看| 啪啪啪免费亚洲精品网站| 亚洲综合久久综合网| 国产av人人夜夜澡人人爽下载| 男人天堂在线免费观看| 大鸡巴爆操美女骚逼| av网站资源在线观看| 黑人精品一区a一二区b| 91在线视频只有精品| 亚洲伊人av 综合福利| 欧美精品黑人粗大破除| 男的扒开女的下面狂操视频| 亚洲无码精品中的精品 | 好的一级毛片免费毛片直播| 东方av在线免费进入| 起碰97视频在线播放| 国产成人啪精品视频免费| 在线人妻视频网站免费| 精品岛国产熟女人妻欲求不满| 偷拍亚洲另类图片视频| 精品少妇人妻av免费久久胖妇| 国产伦精品三区精品国偷自产在线 | 东游记中文字幕版哪里可以看到| 午夜啪啪啪免费视频网站| 少妇高潮尖叫久久久久| 日本大鸡巴乱伦肏屄网| av在线操亚洲图片| 无人码一区二区三区视频| 亚洲精品成人原创视频| 精品一区二区三区四区激情| 最大最全av中文字幕网| 4个黑人操素人视频网站精品91| 天天日天天看天天摸| 17c在线观看视频国产aa| 亚洲 网友 在线 观看| 人人妻人人妻人人妻精品| 日韩精选高清大片在线观看| av男人天堂精品久久| 蜜桃aⅴ噜噜一区二区三区网址| 国产a v一区二区三区香蕉| 在线观看高清日韩av| 国产精品久久久久白浆| 亚洲自偷自拍另类性受不了| 天天色天天干天天操| 蜜桃av在线网址观看| 成人性生交大免费三人| 91九色porny国产探花| 亚洲天堂欧美中文字幕| 99,九九,久久精品| 国产又粗又长又黄视频| 在线观看免费a亚洲| 五月激情四射丁香婷婷激情四射| 美女吃鸡巴黑料破处自慰| 熟女免费在线观看视频| 操日本裸体美女骚逼| 国产黑色丝袜视频在线观看下| 久操av在线免费观看| 五月婷婷综合久久久| 超级碰碰碰97免费视频97| 四川操bb操bb操b| 在线小视频,你懂的| 51日日夜夜精品视频| 99久久精品国产欧美一区二区| 亚洲伊人av 综合福利| 2018免费天天干夜夜操| 欧美大黑硬鸡巴操骚肥湿逼| 亚洲av午夜精品一老妈| 男人爽爽女人的视频一区二区三区| 99国国视频在线播放| 青青草原x全国在线观看| 港台经典一级成人免费av| 亚洲av好看xx站| 激情综合网激情俺她去| 五月天丁香婷久久爱| 在线精品亚洲区一区二区| 人妻少妇精品专区一二三| 久re这里只有精品视频| 夜夜骑加勒比天天操| r人人妻人人澡人人爽| 4455vw在线观看| 国产成人一区二区三区久| 漂亮人妻被强制中出| 丝袜制服 亚洲 国产 91| 婷婷亚洲综合在线五月天| 日本老太婆老熟妇av| 一区二区三区在线 日韩| 黄色成人激情福利在线影院| 青青操国产精品视频在线| 女抽插流出张开淫水视频| 亚洲一区二区三区免费| 偷窥老熟女久久久av| 99精品国产自在现线观看| 欧美在线一区日韩国产| 亚洲图色熟女五月天| 国产乱人伦av麻豆网| 色婷婷亚洲久久97成人| 天天天天拍天天天天天天| 成年女人毛片免费在线播放| 91精品人妻一区二区三区水蜜桃| 色噜噜在线综合亚洲欧美| 人妻 日韩精品免费| 亚洲日产av一区二区在线| 亚洲av男人的天堂久久久| 免费观看黄色韩日av| 销魂少妇一区二区视频| 蜜桃成人av电影网站| 亚洲日本一区二区嫩草| 日韩高清av一区二区三区| 亚洲天堂都市激情av| 二根鸡巴日一个穴视频| 香蕉久久av一区二区三区四区| 四川熟女a一区二区三区| 国产精品一品二区三区日韩| 精品午夜国产福利观看| 好的一级毛片免费毛片直播| 丰满人妻被猛烈进入中文字幕四川| 在线视频你懂的视频| 美女极品美女福利视频在线| 办公室被吃奶好爽在线观看视频| 黑人系列哪个最猛番号| 亚洲av性色在线观看黄色| 童话村热久久精品精| 日韩国产亚洲在线视频| 亚洲av男人的天堂久久久| 中文字幕最新色片av| 日本中文字幕人妻一区二区| 亚洲自拍偷拍清纯唯美| 91麻豆精品国产乱码久久久久久| 爆操嫩逼黑丝袜美女小骚逼| 亚洲免费淫网站在线观看| 色片免费在线观看喷水| 老司机免费福利视频网| 91人妻人人做人人爽九色全集 | 亚洲国产中文字幕在线视频| 在线免费观看欧美激情视频| 中字av在线一区二区中字| 成年女人毛片免费在线播放| 黑人精品一区a一二区b| 隔壁放荡人妻bd完整版| 免费av区在线观看| 美女吃鸡巴黑料破处自慰| 人妻寝取少妇乱中文字幕| 成人激情在线一区二区| 欧美激情性4一级完整版| 中文字幕第一区久久| 国产av大全网站天堂| 欧美三级一区二区三区四区五区| 中文字幕亚洲日韩第一页| 操人妻一区二区三区| 欧洲日本亚洲一区二区| 精品人妻一区三区三区| 久久草大香蕉在线视频| 一区二区三区欧美高清| 国产极品尤物粉嫩泬在线观看| 欧美一区二区蜜桃视频| 一区二区三区国产欧美日韩| 欧美日韩国产在线观看了| 91国内精品视频在线| 亚洲成av中文字幕| 亚洲国产精品日日夜夜| 亚洲精品1234区在线看| 日本熟妇丰满厨房55| av中文字幕在线播放| 亚洲日产av一区二区在线| 99久久精品美女高潮喷水| 亚洲精品少妇蜜桃久久久| 人妻熟女一区二区aⅴ佐佐木明希| 96人妻一区=区三区| 亚洲日产av一区二区在线| 人妻熟一区二区三区四区不卡| 真人同房直接做视频免费| 亚洲熟妇色在线观看| 福利视频国产在线在线观看| 亚洲午夜免费精品久久久| 人妻天天爽夜夜爽麻豆av| Av资源站中文字幕| 日日躁夜夜躁狠狠久久av| 亚洲精品少妇蜜桃久久久| 亚洲三级伦理在线播放| 日韩高清av一区二区三区| 国产女人露脸高潮对白视频| 亚洲精品综合视频自拍| 欧美激情在线观看一区| 6080日韩伦理片| 美女吃鸡巴黑料破处自慰| 日韩国产精品高清中文在线| 怡红院精彩视频在线观看| 夜夜骑加勒比天天操| 亚洲熟妇av一区二区蜜桃第1集| 黄色性网站免费观看| 亚洲精品久久久久久久久久蜜桃| 日韩高清av一区二区三区| 蜜桃aⅴ噜噜一区二区三区网址 | 亚洲伊人av 综合福利| 色男人的天堂一区二区三区| 国产又粗又长又黄视频| 日日夜夜夜操天天干| 日韩破处精品在线观看| xfplay亚洲资源| 亚洲成人一区二区三区av| 亚洲中文字幕有码电影| 亚洲国产精品自拍视频在线观看| 日本老太婆老熟妇av| 国产又黄又粗又硬又大又猛的视频| 久久视频十八岁亚洲精品久久视频| 亚洲成av中文字幕| 欧美午夜不卡一区二区三区| 五月色婷婷在线视频| 亚洲av一区视频在线观看| 欧美va久久久噜噜噜久久| 色片免费在线观看喷水| 亚洲天堂男人的天堂av| 日韩国产亚洲在线视频 | 一级女人色又黄毛片女人| 成人熟女一区二区三区| 蜜桃视频18在线观看| 国产专区视频在线观看免费| 欧美 激情 另类 自拍| 亚洲精品**不卡在线播he| 久久久老熟女一区二区| 97久久精品熟女超碰| 国产欧美日韩一区91| 99精品视频在线观看专区| 手机能看的黄色av| 偷拍自拍 中文字幕| 好吊视频一区二 区三区视频| fc2精品成人免费观看| 国产成人午夜精品视频| 亚洲av午夜精品一老妈| av网址大全在线播放| 亚洲精品乱码久久观看网| 99久久夜色精品国产亚洲软件| 午夜在线看1000集| 蜜臀 av一区二区| 亚洲欧美 在线视频| 丝袜美图一区二区三区| 日韩破处精品在线观看| 隔壁放荡人妻bd完整版| 免费在线国产观看av| 天天操夜夜爽夜夜操| 五月婷婷免费在线观看视频| 免费无码专区毛片高潮喷水| 日本很黄很黄的动态视频| 亚洲欧美 在线视频| 91精品久久久久久婷婷高清| 人妻天天操avxx| 日韩最新视频在线播放| 最大最全av中文字幕网| 日韩毛片综合在线观看网站| 偷拍自拍 中文字幕| 精品人人妻人人澡人人爽| 国产精品久久久久白浆| av 激情 开心 五月| 欧美精品日韩第一页| 99久在线精品99re8热视频| 97超碰在线视频观看| 2020精品国产自在现线官网 | 极品人妻vide0sss人妻| 日韩精品一区二区三区中文精| 欧美一区二区蜜桃视频| 亚洲高清中文字幕在线的| 亚洲无码精品中的精品| 熟女吧国产精品一区二区三区| 亚洲人体艺术二区三区视频| 亚洲国产成人在线观看网址| 成人教育 在线学习| av影视在线免费观看| 亚洲精品久久久久久久久久蜜桃| 亚洲天堂男人的天堂av| 三上悠亚和黑人665番号| 精产国品一二三产区999| 亚洲中文字幕有码电影| 91表用白丝脚帮我脚交| 男人天堂新在线电影| 欧美综合一二区在线| 国产精品亚洲综合视频| 在线视频 国产 日韩 欧美| 日本美国亚洲一区二区| 少妇内射的视频一区二区| 4455vw在线观看| 91表用白丝脚帮我脚交| 国产免费一级高清淫日本片| 天天天天拍天天天天天天| 欧美三级一区二区三区四区五区| 亚洲五区四区欧美视频| 久操av在线免费观看| 国产半推半就精品强推视频| 欧美日韩国产综合不卡| 亚洲欧美精品tv久久久久久久久 | 97色 国产精品综合| 天天日天天看天天摸| 在线观看成人激情av| 国产伦精品一区二区黑人| 九月丁香婷婷中文字幕| www久久久久久久99| 欧美黑人天天干夜夜操| 挺进老妇的肉91九色| 亚洲在线一区二区三区免费| 欧美在线观看视频一区五区| 欧美 亚洲 激情 自拍| 天天日天天看天天摸| 99热6在线播放免费| 天天色天天干天天操| 99精产国品一二三产区网站| 日本五十路六十路中出| 国产黑色丝袜视频在线观看下| 182tv在线福利视频| 亚洲无码成人福利视频| 久久精品国产亚洲AV牛牛影视| 免费观看日本黄页网站| 青青操成人免费在线视频| 熟女免费在线观看视频 | 国产高清在线免费视频| 亚洲成年人三级电影| 精品少妇人妻av免费久久胖妇| x8x8免费在线观看视频| 四川操bb操bb操b| 2020精品国产自在现线官网| 99精品国产免费久久久久久| 999在线视频一区二区三区| 五月婷婷综合大香蕉五月天| 91老熟女连续高潮对白| 蜜臀 av一区二区| 宝贝把腿张开让我添| 国产又粗又长又黄视频 | 69精品人妻一区二区| 亚洲天堂精品区三区二区一区| 福利视频国产在线在线观看| 精品一区二区三区大全| 农村女人91熟女熟妇| 亚洲人成小说网站色在线| 极品人妻vide0sss人妻| 大秀视频一区二区三区| 亚洲福利导航在线视频| 大秀视频一区二区三区| 免费观看黄色韩日av| 亚洲偷偷自拍视频网| 日本性少妇xxxx| 欧美精品黑人粗大破除| 91精品午夜呻吟xxxx| 欧美一级性生活片人与动物| 亚洲一区 成人在线| 91高清免费观看在线| 2012在线国语中文字幕| 欧美一区二区三区乱轮| av网址大全在线播放| 高清日本wwwcom| 国产原创成人av剧情在线播放| 国产传媒中文字幕在线| 69精品人妻一区二区 | 99精品热视频在线观看| 99久久久国产精品美女| 精品国产9999久久久久| 亚洲人成青青操免费观看| av一av一av中文字幕| 婷婷色综合久久五月天| 要看tv在线观看欧美日韩| 亚洲天堂男人的天堂av| 亚州 欧美日韩人妻熟女| 人妻寝取少妇乱中文字幕| 亚洲综合另类小说色区色噜噜,| 玖玖玖精品视频在线观看| 九月丁香婷婷中文字幕 | 亚洲人成小说网站色在线| 人妻少妇精品专区一二三| 老熟妇乱子伦中文字幕视频| 欧洲日本亚洲一区二区| 欧美一级黄片视频免费| 99,九九,久久精品| 天天色天天操综合网| 制服丝袜诱惑综合网| 成av一区二区三区久久| 中文字幕第一区久久| 欧美中文字幕综合在线| 日韩av中文字幕网址| 香蕉影视在线观看av最新| 在线观看免费黄片欧美| 午夜精品久久久久久99| 亚洲日本欧洲一区二区| 都市激情校园春色av| 久久精品亚洲国产一区二区| 欧美激情性做爰视频| 欧美亚洲国产校园春色| 国产乱子伦一区=区三区| 天天色天天爱天天舔| 91精品午夜呻吟xxxx| 丝袜制服 亚洲 国产 91| 午夜三级影片免费播放| 黑人精品一区a一二区b| 日本五十路六十路中出| 久国产一二三区四区乱码2021| 草逼美女逼话多的视频出水| 中字av在线一区二区中字| 99久久精品久久久久久清纯| 97色 国产精品综合| 黄片免费观看久久av| 17c在线观看视频国产aa| 久久精品在线观看免费视频| 欧美熟妇搡bbbb水蜜桃| 亚洲av福利片久久久久| 国产福利中文字幕导航| av影视在线免费观看| 国产91精品久久久久高潮| 天天舔天天做天天爱| 熟女人妻av中文字幕| 天天操天天湿天天干| 亚洲精品成人a8198| 一级白丝美女久久久久| 黄色 成年人 免费观看| 欧美精品综合第一页| 一区二区三区在线中国| 丝袜美腿视频诱惑亚洲| 成人午夜影视在线观看| 少妇美女大极品内射| 成人黄色大全在线观看| 动漫av纯肉免费在线观看| 免费观看黄色韩日av| 成年女人毛片免费在线播放| 男人的坤插进女人的屁股里的视频| 午夜性色福利视频自拍偷拍 | 亚洲天堂都市激情av| 微拍一区二区在线观看| 天天操天天湿天天干| 久久亚洲日本精品视频| 日韩伦理一区二区三区有码| 国产c片免费观看| 人妻中文字幕在线视频免费观看| 97偷偷碰在线视频| 日韩欧美一区久久久久久| 日韩破处精品在线观看| 精品久久久久aⅴ一区二区| 精品国产日韩一区三区| 欧美日韩国产在线观看了| 久久久国产视频91| 国产av大全网站天堂| 超级碰碰碰97免费视频97| 一区二区三区国产欧美日韩| 9797人人妻人人澡| 欧美亚洲国产成人免费在线| 青青草成人免费电影| 91久色porny视频在线| 亚洲美女乱1区2区3区| 青青操国产精品视频在线| 国产伊人 av 自拍| 香蕉久久av一区二区三区四区| 五月色婷婷在线视频| 亚洲欧美日韩偷窥自拍| 免费av在线中文字幕| 中文字幕最新色片av| 视频你懂得在线观看| 五月天免费在线观看| 亚洲一区二区成人综合| 国产精品欧美日韩久久久免费观看| 亚洲少妇av在线播放| 黑人熟女一区二区三区| 亚洲精品国偷自产久色| 99久久香蕉国产线看| 国产又粗又长又黄视频| 色淫骚色色色色色色美女| 在线91精品亚洲网站精品成人| 手机能看的黄色av| 操女人下阴黄色一级视频| 日韩精品在线播放视频成年人| 99精品国产免费久久久久久| 欧美日韩无卡一二三区| 亚洲主要位于五带中的什么带? | 欧美日韩无卡一二三区| 亚洲国产精品自拍视频在线观看| 日韩精品在线播放视频成年人| aaa222男人天堂| 亚洲精品在线观看高清资源| 欧洲av,亚洲av| 9797人人妻人人澡| 成人黄色大片免费网站| 日本大鸡巴乱伦肏屄网| 国产熟妇一区二区三区av| 国产麻豆在线av| 大鸡巴爆操美女骚逼| 日韩毛片综合在线观看网站| 熟女人妻人妻のhd| 欧美亚洲校园春色另类| 女人被男人阳具抽插的呻吟视频 | 好的一级毛片免费毛片直播| 日日夜夜狠狠干干亚洲| 91大神视频在线观看视频| 国产剧情swag在线观看| 国产视频在线精品视频| 免费成视频人免费91| 92免费视频人妻网| 91大神视频在线观看视频| 久久精品国产亚洲av视瓶 | 国产中文字幕在线免费播放| 老鸭窝在线观看免费观看高清版 | 亚洲精久久久久久久久久久久久| 亚洲国产欧美日韩国产| 91色porny 在线播放| 免费在线观看国产成人大片| r人人妻人人澡人人爽| 阿v视频在线观看免费播放| 久久精品国产9久久综合| 欧美久久久久亚洲综合| 国产又大又粗又硬又爽视频| 97超碰在线视频观看 | av大片在线观看免费| 99久久精品久久久久久清纯| 天天色天天操综合网| 最新人妻熟女中文字幕| 91精品综合国产熟女| mm在线视频观看免费观看| 天天干天天日天天超| 亚洲国产aⅴ成人精品无吗| 国产成人午夜精品视频| 97超碰在线cao| 男生日女生逼的视频| 免费观看黄色韩日av| 天天透天天插天天通| 4455vw在线观看| 操白嫩人妻少妇真爽视频| 欧美一级操逼啊啊啊哦哦哦| 日韩一区二区视频在线看 | 人妻熟女一区二区aⅴ佐佐木明希| suv精品一区二区6| 91表用白丝脚帮我脚交| av乱亚洲一区二区三区| 在线观看国产影片| av男人免费的天堂| 久久躁夜夜躁日日躁狠狠躁| 啊啊啊操死我轮操视频免费| 中文字幕日本一本二本三区| 日本伦理在线免费视频| 精品成人午夜免费看| 亚洲视频免费观看不卡| 青青草原x全国在线观看| 亚洲精品国偷自产久色| 涩涩网站在线观看视频| 亚洲欧美日韩不卡人妻中文字幕| 91麻豆精品国产91久久久平台| 日韩欧美在线不卡一区二区三区| 成人黄色大全在线观看| 男人天堂在线免费观看| 日韩欧美亚洲在线第一页| 国产成人啪精品视频免费| 免费成视频人免费91| 91久久精一区二区三区大全| 国产综合av一区二区| 日韩av中文字幕网址| 爱人体-看人体人体摄影| 久久亚洲日本精品视频| 国产美女遭高潮免费视频|