日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 服務器 > Web服務器 > 正文

docker使用Dockerfile構建鏡像的方法

2024-09-01 13:56:08
字體:
來源:轉載
供稿:網友

構建鏡像

前面我們使用各種鏡像進行測試演示,很多情況下我們是需要自己的鏡像,滿足自己業務需要的鏡像,這就需要我們能夠定制自己需要的鏡像,構建 Docker 鏡像有以下兩種方法。

  • 使用 docker commit 命令。
  • 使用 docker build 命令和 Dockerfile 構建文件。

現在我們不推薦使用 docker commit 命令,而應該使用更靈活、更強大的 Dockerfile 來構建 Docker 鏡像。

1、使用 commit 命令構建

docker commit 命令是創建新鏡像最直觀的方法,其過程包含三個步驟:

  • 運行容器;
  • 修改容器;
  • 將容器保存為新的鏡像。

先從創建一個新容器開始,這個容器我們就使用很常見的 ubuntu 鏡像,操作步驟如下

1.1 運行一個要進行修改的容器

root@ubuntu:~# docker run -ti ubuntu /bin/bashroot@733a4b080491:/#

1.2 安裝 Apache 軟件包

root@733a4b080491:/# apt-get update... ...root@733a4b080491:/# apt-get install -y apache2... ...

我們啟動了一個容器,并在里面安裝了 Apache 。我們將會拿這個容器作為一個 Web 服務器來運行,我們需要把它保存下來,這樣就不用每次都運行這個步驟了。

1.3 提交定制容器

root@ubuntu:~# docker ps -aCONTAINER ID  IMAGE    COMMAND    CREATED    STATUS      PORTS    NAMES733a4b080491  ubuntu    "/bin/bash"   11 minutes ago  Exited (0) 5 seconds ago      suspicious_mestorf
root@ubuntu:~# docker commit 733a4b080491 wzlinux/ubuntu_with_apachesha256:902ac2c87147fefc5b70c741ce9550dcda426cea9f824f442d5cc2744bdc90ae
root@ubuntu:~# docker imagesREPOSITORY     TAG     IMAGE ID   CREATED    SIZEwzlinux/ubuntu_with_apache latest    902ac2c87147  33 seconds ago  261MBubuntu      latest    20c44cd7596f  10 days ago   123MB

可以看到,我們使用 docker commit 提交了修改過的容器,從 size 上可以看到鏡像因為安裝軟件而變大了,docker commit 提交的只是創建容器的鏡像與容器的當前狀態之間有差異的部分,這使得該更新非常輕量。

以上演示了如何用 docker commit 創建新鏡像。然而,Docker 并不建議用戶通過這種方式構建鏡像。因為這是一種手工創建鏡像的方式,容易出錯,效率低且可重復性弱。比如要在 debian base 鏡像中也加入 apache,還得重復前面的所有步驟。更重要的:使用者并不知道鏡像是如何創建出來的,里面是否有惡意程序。也就是說無法對鏡像進行審計,存在安全隱患。

不過,為了對 Docker 有一個更全面的了解,我們還是要了解一下如何使用 docker commit 構建 Docker 鏡像。因為即便是用 Dockerfile(推薦方法)構建鏡像,底層也 docker commit 一層一層構建新鏡像的。學習 docker commit 能夠幫助我們更加深入地理解構建過程和鏡像的分層結構。

2、使用 Dockerfile 構建

Dockerfile 使用基本的基于DSL(Domain Specific Language)語法的指令來構建一個 Docker 鏡像,我們推薦使用 Dockerfile 方法來代替 docker commit,因為通過前者構建鏡像更具備可重復性、透明性以及冪等性。

一旦有了 Dockerfile,我們就可以使用 docker build 命令基于該 Dockerfile 中的指令構建一個新的鏡像。

2.1 我們的第一個 Dockerfile

用 Dockerfile 創建上面的 ubuntu_with_apache,內容如下。

# Version 0.0.1FROM ubuntuRUN sed -i 's/archive.ubuntu.com/cn.archive.ubuntu.com/g' /etc/apt/sources.listRUN sed -i 's/security.ubuntu/cn.archive.ubuntu/g' /etc/apt/sources.listRUN apt-get -y update && apt-get -y install apache2EXPOSE 80

執行 docker build 命令時,Dockerfile 中的所有指令都會被執行并且提交,并且在該命令成功結束后返回一個新鏡像。

root@ubuntu:~/sample# docker build -t ubuntu_with_apache_dockerfile .  ①Sending build context to Docker daemon 6.144kB  ②Step 1/5 : FROM ubuntu   ③ ---> 20c44cd7596fStep 2/5 : RUN sed -i 's/archive.ubuntu.com/cn.archive.ubuntu.com/g' /etc/apt/sources.list ---> Running in bac6dc3b900f ---> c66ad94ad8a4Removing intermediate container bac6dc3b900fStep 3/5 : RUN sed -i 's/security.ubuntu/cn.archive.ubuntu/g' /etc/apt/sources.list ---> Running in 5158558b6403 ---> 0a4c480147c5Removing intermediate container 5158558b6403Step 4/5 : RUN apt-get -y update && apt-get -y install apache2    ④ ---> Running in f547ce7a1b39   ⑤ …… …… ---> 118bde35120a   ⑥Removing intermediate container f547ce7a1b39  ⑦Step 5/5 : EXPOSE 80 ---> Running in e546786de05b ---> f55d7b07365bRemoving intermediate container e546786de05bSuccessfully built f55d7b07365b   ⑧Successfully tagged ubuntu_with_apache_dockerfile:latest

docker,Dockerfile,鏡像

① 運行 docker build 命令,-t 將新鏡像命名為 ubuntu-with-apache-dockerfile,命令末尾的 . 指明 build context 為當前目錄。Docker 默認會從 build context 中查找 Dockerfile 文件,我們也可以通過 -f 參數指定 Dockerfile 的位置。

② 從這步開始就是鏡像真正的構建過程。 首先 Docker 將 build context 中的所有文件發送給 Docker daemon。build context 為鏡像構建提供所需要的文件或目錄。

Dockerfile 中的 ADD、COPY 等命令可以將 build context 中的文件添加到鏡像。此例中,build context 為當前目錄 /sample,該目錄下的所有文件和子目錄都會被發送給 Docker daemon。

所以,使用 build context 就得小心了,不要將多余文件放到 build context,特別不要把 /、/usr 作為 build context,否則構建過程會相當緩慢甚至失敗。

③ Step 1:執行 FROM,將 ubuntu 作為 base 鏡像。ubuntu 鏡像 ID 為 452a96d81c30。

④ Step 4:執行 RUN,安裝 apache,具體步驟為 ⑤ ~ ?。

⑤ 啟動 ID 為 e38bc83df8b1 的臨時容器,在容器中通過 apt-get 安裝 apache。

⑥ 安裝成功后,將容器保存為鏡像,其 ID 為 fbc9af08328d。這一步底層使用的是類似 docker commit 的命令。

⑦ 刪除臨時容器 02a4f3243dda。

⑧ 鏡像構建成功。

通過 docker images 查看鏡像信息。

root@ubuntu:~/sample# docker imagesREPOSITORY      TAG     IMAGE ID   CREATED    SIZEubuntu_with_apache_dockerfile latest    f55d7b07365b  27 minutes ago  261MBwzlinux/ubuntu_with_apache  latest    902ac2c87147  About an hour ago 261MBubuntu       latest    20c44cd7596f  10 days ago   123MB

2.2 查看鏡像分成結構

ubuntu_with_apache_dockerfile 是通過在 base 鏡像的頂部添加幾個新的鏡像層而得到的。

docker,Dockerfile,鏡像

上圖是從原文中拷貝的,下圖是在我的電腦上面實驗得到的數據,IMAGE的ID不同,但是其他都是相同的。

docker,Dockerfile,鏡像

查看我本機的Ubuntu的IMAGE歷史如下:

docker,Dockerfile,鏡像

從輸出的結果可以看出來,每個命令都會生成一個鏡像層。

docker history 會顯示鏡像的構建歷史,也就是 Dockerfile 的執行過程。

ubuntu_with_apache_dockerfile 與 ubuntu 鏡像相比,確實只是多了幾層,Dockerfile 中的每個指令都會創建一層,docker history 也向我們展示了鏡像的分層結構,每一層由上至下排列。

2.3 鏡像的緩存特性

由于每一步的構建過程都會將結果提交為鏡像,所以 Docker 的構建鏡像過程就顯得非常聰明。它會將之前的鏡像層看作緩存。

比如我們把 EXPOSE 80 改為 EXPOSE 8080。

root@ubuntu:~/sample# docker build -t ubuntu_with_apache_8080 .   Sending build context to Docker daemon 6.144kBStep 1/5 : FROM ubuntu ---> 20c44cd7596fStep 2/5 : RUN sed -i 's/archive.ubuntu.com/cn.archive.ubuntu.com/g'  /etc/apt/sources.list ---> Using cache ---> c66ad94ad8a4Step 3/5 : RUN sed -i 's/security.ubuntu/cn.archive.ubuntu/g' /etc/apt/sources.list ---> Using cache ---> 0a4c480147c5Step 4/5 : RUN apt-get -y update && apt-get -y install apache2 ---> Using cache ---> 118bde35120aStep 5/5 : EXPOSE 8080 ---> Running in c89f8210c56a ---> ac88967e578eRemoving intermediate container c89f8210c56aSuccessfully built ac88967e578eSuccessfully tagged ubuntu_with_apache_8080:latest

我們可以看到,之前的指令都是一樣的,所以 docker 直接利用之前的緩存,只構建我們更改的指令,新的鏡像層如下。

docker,Dockerfile,鏡像

如果我們希望在構建鏡像時不使用緩存,可以在 docker build 命令中加上 --no-cache 參數。

Dockerfile 中每一個指令都會創建一個鏡像層,上層是依賴于下層的。無論什么時候,只要某一層發生變化,其上面所有層的緩存都會失效。也就是說,如果我們改變 Dockerfile 指令的執行順序,或者修改或添加指令,都會使緩存失效。比如我們在前面添加指令 MAINTAINER wzlinux "admin@wzlinux.com"。如下:

# Version 0.0.1FROM ubuntuMAINTAINER wzlinux "admin@wzlinux.com"RUN sed -i 's/archive.ubuntu.com/cn.archive.ubuntu.com/g' /etc/apt/sources.listRUN sed -i 's/security.ubuntu/cn.archive.ubuntu/g' /etc/apt/sources.listRUN apt-get -y update && apt-get -y install apache2EXPOSE 80

然后使用docker進行構建,查看其過程。

root@ubuntu:~/sample# docker build -t ubuntu_with_apache_author .Sending build context to Docker daemon 6.144kBStep 1/6 : FROM ubuntu ---> 20c44cd7596fStep 2/6 : MAINTAINER wzlinux "admin@wzlinux.com" ---> Running in 637bb3457407 ---> 829b24531d69Removing intermediate container 637bb3457407Step 3/6 : RUN sed -i 's/archive.ubuntu.com/cn.archive.ubuntu.com/g' /etc/apt/sources.list ---> Running in 416ae8aefb61 ---> 84643fe8447aRemoving intermediate container 416ae8aefb61Step 4/6 : RUN sed -i 's/security.ubuntu/cn.archive.ubuntu/g' /etc/apt/sources.list ---> Running in 58d8375fd5c3 ---> 1cb5776982d3Removing intermediate container 58d8375fd5c3Step 5/6 : RUN apt-get -y update && apt-get -y install apache2 ---> Running in 0514a7d04814 …… ……Processing triggers for sgml-base (1.26+nmu4ubuntu1) ... ---> 30eb21527feeRemoving intermediate container 0514a7d04814Step 6/6 : EXPOSE 80 ---> Running in 476ca5f98886 ---> 30672998f3d0Removing intermediate container 476ca5f98886Successfully built 30672998f3d0Successfully tagged ubuntu_with_apache_author:latest

docker,Dockerfile,鏡像

從輸出的結果生成了很多新的鏡像層,緩存已經失效。

2.4 調試 Dockerfile

包括 Dockerfile 在內的任何腳本和程序都會出錯。有錯并不可怕,但必須有辦法排查,那我們測試一下在構建的過程中指令出現錯誤怎么辦,比如我們把第二個sed指令寫錯了,寫錯了sd。

# Version 0.0.1FROM ubuntuMAINTAINER wzlinux "admin@wzlinux.com"RUN sed -i 's/archive.ubuntu.com/cn.archive.ubuntu.com/g' /etc/apt/sources.listRUN sd -i 's/security.ubuntu/cn.archive.ubuntu/g' /etc/apt/sources.listRUN apt-get -y update && apt-get -y install apache2EXPOSE 80

執行 docker build,如下。

docker,Dockerfile,鏡像

Dockerfile 在執行第四步 RUN 指令時失敗。我們可以利用第三步創建的鏡像 84643fe8447a 進行調試,方式是通過 docker run -it 啟動鏡像的一個容器。

root@ubuntu:~/sample# docker run -ti 84643fe8447a /bin/bashroot@422ecce78664:/# sdbash: sd: command not found

其實我們肯定不會傻到連 sd 不存在也不知道,我這里只是作為一個例子,其他更難的排錯方法我們就使用這種方式。

2.5 Dockerfile 指令

FROM
指定 base 鏡像。

MAINTAINER
設置鏡像的作者,可以是任意字符串。

COPY
將文件從 build context 復制到鏡像。
COPY 支持兩種形式:
COPY src destCOPY ["src", "dest"]
注意:src 只能指定 build context 中的文件或目錄。

ADD
與 COPY 類似,從 build context 復制文件到鏡像。不同的是,如果 src 是歸檔文件(tar, zip, tgz, xz 等),文件會被自動解壓到 dest。

ENV
設置環境變量,環境變量可被后面的指令使用。例如:

ENV MY_VERSION 1.3RUN apt-get install -y mypackage=$MY_VERSION

EXPOSE
指定容器中的進程會監聽某個端口,Docker 可以將該端口暴露出來。

VOLUME
將文件或目錄聲明為 volume。

WORKDIR
為后面的 RUN, CMD, ENTRYPOINT, ADD 或 COPY 指令設置鏡像中的當前工作目錄。

RUN
在容器中運行指定的命令。

CMD
容器啟動時運行指定的命令。
Dockerfile 中可以有多個 CMD 指令,但只有最后一個生效。CMD 可以被 docker run 之后的參數替換。

ENTRYPOINT
設置容器啟動時運行的命令。
Dockerfile 中可以有多個 ENTRYPOINT 指令,但只有最后一個生效。CMD 或 docker run 之后的參數會被當做參數傳遞給 ENTRYPOINT。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
欧美日韩中文字幕在线视频| 亚洲第一网中文字幕| 国产在线看一区| 91精品国产自产观看在线| 国产调教精品| www.eeuss影院| 91www成人久久| 久99久视频| 久久精品国产99| 中文字幕在线国产| 亚洲高清视频在线| 在线视频观看日韩| 中文字幕 欧美 日韩| av免费观看国产| 午夜视频在线观看一区| 国产高潮久久久| 亚洲国产www| 69av亚洲| 日韩亚洲欧美中文三级| 日本一级一片免费视频| 国产黄色在线| 日韩精品视频免费| 欧美日韩综合在线| 日韩欧美成人一区二区三区| 亚洲高清精品视频| 色综合天天性综合| 欧美在线视频第一页| 中文字幕在线视频网| 在线视频亚洲| 精品国自产在线观看| 欧美 日韩 国产在线| 亚洲最新永久观看在线| 精品成a人在线观看| 国产欧美日产一区| 亚洲视频日韩| 日韩美女中文字幕| 欧美三级中文字幕| 中文精品在线观看| 中文欧美字幕免费| 中文字幕成人乱码在线电影| 中文字幕欧美日韩va免费视频 | 久久99蜜桃精品| 不卡视频一区二区| 中文字幕在线日韩| 日韩在线观看一区| 中文字幕在线看精品乱码| 91精品网站| 欧美自拍一区| 日韩不卡高清视频| 日韩三级视频在线| 91精品视频播放| 亚洲福利精品在线| 日韩欧美三级| av免费在线观看网址| 亚洲欧美中文字幕在线一区| wwwav在线播放| 欧美在线视频二区| 久久蜜桃一区二区| 亚洲第一中文字幕| 日韩欧中文字幕| 亚洲校园欧美国产另类| 精品国内自产拍在线视频| 欧美日韩精品久久久| 国产一卡二卡3卡4卡四卡在线| 日韩一级免费在线观看| 亚洲综合中文字幕在线| 久久精品免费在线观看| 在线观看国产一区| 国产小视频在线| 91亚洲欧美| 中文字幕日韩在线视频| 精品成人久久av| 国产一区在线不卡| 91精品国产91久久久久久不卡| 欧美日韩视频免费播放| 午夜一区二区三区| 久久视频免费看| 中文字幕五月天| 日韩精品国产欧美| 欧美日韩久久不卡| 欧美国产一级| 一区二区三区高清在线| 日韩亚洲欧美中文高清在线| 国产在线小视频| 日韩国产在线不卡视频| 中文字幕日韩在线视频| 久久久精品福利| 91精品国产调教在线观看 | 国产1卡2卡三卡四卡网站| 亚洲社区在线| 国产日产一区二区三区| 国产乱国产乱300精品| a级在线免费观看| 国产日韩综合| 欧美国产日韩综合| 亚洲黄色在线观看| 91日韩中文字幕| 中文字幕欧美国内| 中文精品在线观看| 91精品国产综合久久蜜臀| 国产视频三级在线观看播放| 亚洲乱码一区av黑人高潮| 国产一级在线播放| 91精品国产综合久久蜜臀 | 国产一区不卡精品| 精品视频三区| 欧美三级一区二区三区| 欧美日韩中文字幕在线视频| 亚洲一区资源| 日韩精品手机在线| 日韩在线视频在线观看| 在线精品视频免费播放| 日韩在线视频精品| 77777_亚洲午夜久久多人| 国产三级精品在线观看| 久久精品一级爱片| 日韩国产一区三区| 精品国产免费视频| 婷婷精品进入| 日韩在线一区二区| 欧美日韩一二三| 欧美日韩国产页| 91精品国产入口| 日韩欧美99| 国产乱国产乱老熟300部视频| 日韩三级在线播放| 国产专区中文字幕| √新版天堂资源在线资源| 国产日产一区二区三区| 亚洲羞羞网站| 亚洲国产欧美日韩精品| 精品乱人伦一区二区三区| 精品国产不卡一区二区| 日韩欧美在线字幕| 欧美日韩国产专区| 国产在成人精品线拍偷自揄拍| 中文字幕精品一区二| 日韩av在线中文字幕| 久久久精品日韩欧美| 99这里有精品视频| 中文字幕日韩欧美| 国产啊啊啊视频在线观看| 日韩区欧美区| 久久久水蜜桃| 91亚洲国产高清| 国产午夜精品视频免费不卡69堂| 91麻豆免费视频网站| 蜜桃精品视频| 精品久久九九| 国产三级中文字幕| 国产裸体歌舞团一区二区| 亚洲日本精品视频| 亚洲视频中文字幕| 三级精品视频| 国产1区在线| 欧美久久久久久蜜桃| 欧美日韩午夜在线视频| 国内精品露脸在线视频播放| 欧美日韩国产专区| 日韩精品在线免费播放| 日韩视频在线一区| www.av中文字幕| 亚洲福利精品在线| 日本黄色一区二区| 日韩精品视频在线看| 在线国产三级| 精品国产91| 国产高清一区| 在线日韩欧美| 日韩精品中文字幕第1页| www在线播放| 亚洲最新永久观看在线| a天堂在线资源| 黄色在线资源| 国产三级在线| 日韩视频1区| 日韩不卡一二三区| 亚洲福利在线看| 久久久99精品久久| 日本精品福利视频| 影音先锋一区二区资源站| 国产区视频在线观看| 国产91久久久久蜜臀青青天草二| 精品国自产在线观看| 日韩 欧美 中文| 欧美 日韩 国产 在线| 国产一级视频| 91欧美在线视频| 综合激情国产一区| 欧美日韩精品久久久| 欧美中文字幕视频在线观看| 99精品在线播放| 中文不卡在线| 国产一区精品在线| 欧美日韩中文| 中文字幕精品在线播放| 亚洲狠狠婷婷综合久久久久图片| 91亚洲国产| 欧美日韩激情一区| 最近免费中文字幕在线第一页| 亚洲免费婷婷| 亚洲成av人片| 中文字幕在线观看视频www| 亚洲欧美久久久| 欧美日韩亚洲视频| 国产字幕中文| 亚洲最新免费视频| 精品久久久久久综合日本欧美| 欧美国产综合视频| 日韩av一区在线| 国产黄色小视频| 日韩 欧美 综合| 国产一区久久久| 中文字幕在线观看网址| 欧美日韩国产高清一区| 99国产成 人 综合 亚洲欧美| 久久久精品欧美| 欧美日韩亚洲天堂| 日韩免费视频| 中文字幕在线国产| 91国内在线| 日韩在线视频一区| 精品亚洲国内自在自线福利| 欧美日韩中文字幕视频| 欧美国产日韩综合| 一区二区三区鲁丝不卡| 国产一级在线播放| 国产黄色精品| 国产激情在线视频| va中文字幕| 视频一区二区中文字幕| 精品国产欧美| 一区二区三区视频网站| 亚洲综合视频一区| 一区二区三区精品在线| 亚洲免费看av| 国产www在线观看| 欧美日韩国产一二三| 国产欧美日产一区| 欧美日韩亚洲不卡| 精品成a人在线观看| 国产乱国产乱300精品| 91精品日本| 欧美日韩三级在线观看| 午夜私人影院在线观看| 日韩欧美国产1| 精品欧美日韩在线| 最新中文字幕在线| 中文字幕日韩在线视频| 日韩精品在线网站| 欧美日韩高清一区二区不卡| 一区二区高清在线| 久久综合九色欧美综合狠狠| 欧美日韩精品高清| 欧美国产中文| 91精品国产自产在线观看永久∴| 黄色欧美日韩| 日韩欧美在线网站| 欧美日韩乱国产| 精品国产91| 91久久精品国产91久久| 91av久久久| 日韩精品在线免费看| 国产 欧美在线| 亚洲第一中文字幕| 国产高清视频一区二区| 日韩在线视频一区| 樱花草www在线观看| 精品日本视频| 中文字幕在线播放一区| 国产一区三区三区| 精品中文在线| 中文字幕一区二区三区精品| 日韩欧美中文免费| 亚洲 欧美综合在线网络| 国产在线二区| 国产福利免费观看| 欧美久久在线观看| 91精品国产91久久久久久不卡| 国产一级在线播放| 欧美日韩精品在线观看| 欧洲精品在线视频| 精品福利二区三区| 中文字幕视频在线观看| 中文字幕 乱码 中文乱码91| 欧美中文字幕视频| 久久久久久99精品| 色欧美日韩亚洲| 午夜高潮免费视频| 九七久久人人| 二区视频在线观看| 国产成人精品999| 亚洲国产欧美91| 一二三区精品视频| 色猫猫国产区一区二在线视频| 99色在线视频| 国产综合精品在线| 一区二区高清视频| 国产久卡久卡久卡久卡视频精品| 国产在线二区| 日韩在线二区| 国产91欧美| 色综合婷婷久久| 久久99蜜桃精品| 亚洲黄色片在线观看| 快she精品国产999| 中文字幕精品一区二区三区在线| 欧美三级日韩三级| 91久久在线| 欧美日韩亚洲综合| 成人一区二区不卡免费| 精品三级在线| 亚洲成年人在线播放| 国产一级免费| 免费精品国产自产拍在| 一区二区中文视频| 日韩欧美在线网址| 日韩视频不卡中文| 一区二区三区免费看视频 | 日韩精品视频免费看| 亚洲福利精品在线| 国产欧美日韩中文久久| 久久精品最新免费国产成人| 樱花草www在线观看| 久久手机免费观看| 色综合久久六月婷婷中文字幕| 亚洲欧美久久久| 日韩欧美99| 欧洲精品二区| 亚洲午夜久久| 精品久久久三级| 国产一区二中文字幕在线看| 精品国产91| 亚洲欧美韩国综合色| 欧美一级在线免费| 久久91精品国产91久久小草 | 日韩国产欧美在线视频| 亚洲综合三区| 国产视频三级在线观看播放| 日韩精品第一区| 欧美日韩在线播放视频| av不卡免费看| 在线观看av的网站| 欧美日中文字幕| 日韩中文字幕视频在线| 一二三区精品福利视频| 中文字幕亚洲免费| 亚洲综合日韩欧美| 欧美激情视频一区二区三区在线播放| 亚洲成av人综合在线观看| 99在线国产| 亚洲欧美999| 综合激情国产一区| 精品视频www| 一级片在线免费看| 久久91精品久久久久久秒播| 精品亚洲成a人片在线观看| 欧美日韩高清在线播放| 搞黄在线观看| 交视频在线观看国产| 日韩精品在线免费播放| 极品久久久久久| av免费观看国产| 欧美二三四区| 亚洲男人在线| 日韩中文在线视频| 日韩av一区二区在线| 最近高清中文在线字幕在线观看1| 欧美 亚洲 精品 三区| 粉嫩喷白浆久久| 欧美 日韩 国产 在线观看| 亚洲第一页中文字幕| 日韩欧美综合在线| 日韩午夜黄色| 亚洲电影中文字幕在线观看| 亚洲欧美伊人| 在线欧美日韩国产| 久久精品99久久久久久久久| 久久精品欧美日韩精品| 97久久精品午夜一区二区| 精品一二三区| 视频一区三区| 欧美大片在线观看一区| 欧美日韩亚洲国内综合网俺| 国产999精品在线观看| 91精品国产调教在线观看| 久久99精品久久久| 韩日中文字幕第一页| 91精品国产综合久久香蕉的特点| 欧美成人vr18sexvr| 欧美日韩激情一区| 中文字幕一区免费| 欧美日韩成人一区| 国产日韩专区| 国产专区中文字幕| 日韩中文首页| 欧美亚洲视频在线看网址| 97视频在线| av免费网站在线观看| 国产成免费视频|