精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

基于BuildKit優化Dockerfile的構建

系統 Linux
本文,我們介紹了使用Docker BuildKit優化Dockerfile,并因此加快了鏡像構建時間。這些速度的提高,可以幫助我們提高效率和節省計算能力。

Docker通過讀取Dockerfile中的指令自動構建鏡像,Dockerfile是一個文本文件,其中依次包含構建給定鏡像所需的所有命令。

上面的解釋摘自Docker的官方文檔并總結了Dockerfile的用途。Dockerfile的使用非常重要,因為它是我們的藍圖,是我們添加到Docker鏡像中的層的記錄。

本文,我們將學習如何利用BuildKit功能,這是Docker v18.09上引入的一組增強功能。集成BuildKit將為我們提供更好的性能,存儲管理和安全性。

本文目標

  •  減少構建時間;
  •  縮小鏡像尺寸;
  •  獲得可維護性;
  •  獲得可重復性;
  •  了解多階段Dockerfile;
  •  了解BuildKit功能。

先決條件

  •  Docker概念知識
  •  已安裝Docker(當前使用v19.03)
  •  一個Java應用程序(在本文中,我使用了一個Jenkins Maven示例應用程序)

讓我們開始吧!

簡單的Dockerfile示例

以下是一個包含Java應用程序的未優化Dockerfile的示例。我們將逐步進行一些優化。 

  1. FROM debian  
  2. COPY . /app  
  3. RUN apt-get update  
  4. RUN apt-get -y install openjdk-11-jdk ssh emacs  
  5. CMD [“java”, “-jar”, “/app/target/my-app-1.0-SNAPSHOT.jar”] 

在這里,我們可能會問自己:構建需要多長時間?為了回答這個問題,讓我們在本地開發環境上創建該Dockerfile,并讓Docker構建鏡像。 

  1. # enter your Java app folder  
  2. cd simple-java-maven-app-master  
  3. # create a Dockerfile  
  4. vim Dockerfile  
  5. # write content, save and exit  
  6. docker pull debian:latest # pull the source image  
  7. time docker build --no-cache -t docker-class . # overwrite previous layers  
  8. # notice the build time  
  9. 0,21s user 0,23s system 0% cpu 1:55,17 total 

此時,我們的構建需要1m55s。

如果我們僅啟用BuildKit而沒有其他更改,會有什么不同嗎?

啟用BuildKit

BuildKit可以通過兩種方法啟用:

在調用Docker build命令時設置DOCKER_BUILDKIT = 1環境變量,例如: 

  1. time DOCKER_BUILDKIT=1 docker build --no-cache -t docker-class 

將Docker BuildKit設置為默認開啟,需要在/etc/docker/daemon.json進行如下設置,然后重啟: 

  1. { "features": { "buildkit": true } } 

BuildKit最初的效果 

  1. DOCKER_BUILDKIT=1 docker build --no-cache -t docker-class .  
  2. 0,54s user 0,93s system 1% cpu 1:43,00 total 

此時,我們的構建需要1m43s。在相同的硬件上,構建花費的時間比以前少了約12秒。這意味著構建幾乎無需費力即可節約10%左右的時間。

現在讓我們看看是否可以采取一些額外的步驟來進一步改善。

從最小到最頻繁變化的順序

因為順序對于緩存很重要,所以我們將COPY命令移到更靠近Dockerfile末尾的位置。 

  1. FROM debian  
  2. RUN apt-get update  
  3. RUN apt-get -y install openjdk-11-jdk ssh emacs  
  4. RUN COPY . /app  
  5. CMD [“java”, “-jar”, “/app/target/my-app-1.0-SNAPSHOT.jar”] 

避免使用“COPY .”

選擇更具體的COPY參數,以避免緩存中斷。僅復制所需內容。 

  1. FROM debian  
  2. RUN apt-get update  
  3. RUN apt-get -y install openjdk-11-jdk ssh vim  
  4. COPY target/my-app-1.0-SNAPSHOT.jar /app  
  5. CMD [“java”, “-jar”, “/app/my-app-1.0-SNAPSHOT.jar”] 

apt-get update 和install命令一起使用

這樣可以防止使用過時的程序包緩存。 

  1. FROM debian  
  2. RUN apt-get update && \  
  3.     apt-get -y install openjdk-11-jdk ssh vim  
  4. COPY target/my-app-1.0-SNAPSHOT.jar /app  
  5. CMD [“java”, “-jar”, “/app/my-app-1.0-SNAPSHOT.jar”] 

刪除不必要的依賴

在開始時,不要安裝調試和編輯工具,以后可以在需要時安裝它們。 

  1. FROM debian  
  2. RUN apt-get update && \  
  3.     apt-get -y install --no-install-recommends \  
  4.     openjdk-11-jdk  
  5. COPY target/my-app-1.0-SNAPSHOT.jar /app  
  6. CMD [“java”, “-jar”, “/app/my-app-1.0-SNAPSHOT.jar”] 

刪除程序包管理器緩存

你的鏡像不需要此緩存數據。借此機會釋放一些空間。 

  1. FROM debian  
  2. RUN apt-get update && \  
  3.     apt-get -y install --no-install-recommends \  
  4.     openjdk-11-jdk && \  
  5.     rm -rf /var/lib/apt/lists/*  
  6. COPY target/my-app-1.0-SNAPSHOT.jar /app  
  7. CMD [“java”, “-jar”, “/app/my-app-1.0-SNAPSHOT.jar”] 

盡可能使用官方鏡像

使用官方鏡像有很多理由,例如減少鏡像維護時間和減小鏡像尺寸,以及預先配置鏡像以供容器使用。 

  1. FROM openjdk  
  2. COPY target/my-app-1.0-SNAPSHOT.jar /app  
  3. CMD [“java”, “-jar”, “/app/my-app-1.0-SNAPSHOT.jar”] 

使用特定標簽

請勿使用latest標簽。 

  1. FROM openjdk:8  
  2. COPY target/my-app-1.0-SNAPSHOT.jar /app  
  3. CMD [“java”, “-jar”, “/app/my-app-1.0-SNAPSHOT.jar”] 

尋找最小的鏡像

以下是openjdk鏡像列表。選擇最適合自己的最輕的那個鏡像。 

  1. REPOSITORY TAG標簽 SIZE大小  
  2. openjdk 8 634MB  
  3. openjdk 8-jre 443MB  
  4. openjdk 8-jre-slim 204MB  
  5. openjdk 8-jre-alpine 83MB 

在一致的環境中從源構建

如果你不需要整個JDK,則可以使用Maven Docker鏡像作為構建基礎。 

  1. FROM maven:3.6-jdk-8-alpine  
  2. WORKDIR /app  
  3. COPY pom.xml .  
  4. COPY src ./src  
  5. RUN mvn -e -B package  
  6. CMD [“java”, “-jar”, “/app/my-app-1.0-SNAPSHOT.jar”] 

在單獨的步驟中獲取依賴項

可以緩存–用于獲取依賴項的Dockerfile命令。緩存此步驟將加快構建速度。 

  1. FROM maven:3.6-jdk-8-alpine  
  2. WORKDIR /app  
  3. COPY pom.xml .  
  4. RUN mvn -e -B dependency:resolve  
  5. COPY src ./src  
  6. RUN mvn -e -B package  
  7. CMD [“java”, “-jar”, “/app/my-app-1.0-SNAPSHOT.jar”] 

多階段構建:刪除構建依賴項

為什么要使用多階段構建?

  •  將構建與運行時環境分開
  •  DRY方式
    •  具有開發,測試等環境的不同詳細信息
  •  線性化依賴關系
  •  具有特定于平臺的階段 
  1. FROM maven:3.6-jdk-8-alpine AS builder  
  2. WORKDIR /app  
  3. COPY pom.xml .  
  4. RUN mvn -e -B dependency:resolve  
  5. COPY src ./src  
  6. RUN mvn -e -B package  
  7. FROM openjdk:8-jre-alpine  
  8. COPY --from=builder /app/target/my-app-1.0-SNAPSHOT.jar /  
  9. CMD [“java”, “-jar”, “/my-app-1.0-SNAPSHOT.jar”] 

如果你此時構建我們的應用程序, 

  1. time DOCKER_BUILDKIT=1 docker build --no-cache -t docker-class .  
  2. 0,41s user 0,54s system 2% cpu 35,656 total 

你會注意到我們的應用程序構建需要大約35.66秒的時間。這是一個令人愉快的進步。

下面,我們將介紹其他場景的功能。

多階段構建:不同的鏡像風格

下面的Dockerfile顯示了基于Debian和基于Alpine的鏡像的不同階段。 

  1. FROM maven:3.6-jdk-8-alpine AS builder  
  2. …  
  3. FROM openjdk:8-jre-jessie AS release-jessie  
  4. COPY --from=builder /app/target/my-app-1.0-SNAPSHOT.jar /  
  5. CMD [“java”, “-jar”, “/my-app-1.0-SNAPSHOT.jar”]  
  6. FROM openjdk:8-jre-alpine AS release-alpine  
  7. COPY --from=builder /app/target/my-app-1.0-SNAPSHOT.jar /  
  8. CMD [“java”, “-jar”, “/my-app-1.0-SNAPSHOT.jar”] 

要構建特定的鏡像,我們可以使用–target參數: 

  1. time docker build --no-cache --target release-jessie . 

不同的鏡像風格(DRY /全局ARG) 

  1. ARG flavor=alpine  
  2. FROM maven:3.6-jdk-8-alpine AS builder  
  3. …  
  4. FROM openjdk:8-jre-$flavor AS release  
  5. COPY --from=builder /app/target/my-app-1.0-SNAPSHOT.jar /  
  6. CMD [“java”, “-jar”, “/my-app-1.0-SNAPSHOT.jar”] 

ARG命令可以指定要構建的鏡像。在上面的例子中,我們指定alpine為默認的鏡像,但我們也可以在docker build命令中,通過–build-arg flavor=參數指定鏡像。

  1. time docker build --no-cache --target release --build-arg flavor=jessie . 

并發

并發在構建Docker鏡像時很重要,因為它會充分利用可用的CPU線程。在線性Dockerfile中,所有階段均按順序執行。通過多階段構建,我們可以讓較小的依賴階段準備就緒,以供主階段使用它們。

BuildKit甚至帶來了另一個性能上的好處。如果在以后的構建中不使用該階段,則在結束時將直接跳過這些階段,而不是對其進行處理和丟棄。

下面是一個示例Dockerfile,其中網站的資產是在一個assets階段中構建的: 

  1. FROM maven:3.6-jdk-8-alpine AS builder  
  2. …  
  3. FROM tiborvass/whalesay AS assets  
  4. RUN whalesay “Hello DockerCon!” > out/assets.html  
  5. FROM openjdk:8-jre-alpine AS release  
  6. COPY --from=builder /app/my-app-1.0-SNAPSHOT.jar /  
  7. COPY --from=assets /out /assets  
  8. CMD [“java”, “-jar”, “/my-app-1.0-SNAPSHOT.jar”] 

這是另一個Dockerfile,其中分別編譯了C和C ++庫,并在builder以后使用該階段。 

  1. FROM maven:3.6-jdk-8-alpine AS builder-base  
  2. … 
  3. FROM gcc:8-alpine AS builder-someClib  
  4. … 
  5. RUN git clone … ./configure --prefix=/out && make && make install  
  6. FROM g++:8-alpine AS builder-some CPPlib  
  7. …  
  8. RUN git clone … && cmake …  
  9. FROM builder-base AS builder  
  10. COPY --from=builder-someClib /out /  
  11. COPY --from=builder-someCpplib /out / 

BuildKit應用程序緩存

BuildKit具有程序包管理器緩存的特殊功能。以下是一些緩存文件夾位置的示例:

包管理器 路徑 

  1. apt /var/lib/apt/lists  
  2. go ~/.cache/go-build  
  3. go-modules $GOPATH/pkg/mod  
  4. npm ~/.npm  
  5. pip ~/.cache/pip 

我們可以將此Dockerfile與上面介紹的在一致的環境中從源代碼構建中介紹的Dockerfile進行比較。這個較早的Dockerfile沒有特殊的緩存處理。我們可以使用–mount=type=cache來做到這一點。 

  1. FROM maven:3.6-jdk-8-alpine AS builder  
  2. WORKDIR /app  
  3. RUN --mount=target=. --mount=type=cache,target /root/.m2 \  
  4.     && mvn package -DoutputDirectory=/  
  5. FROM openjdk:8-jre-alpine  
  6. COPY --from=builder /app/target/my-app-1.0-SNAPSHOT.jar /  
  7. CMD [“java”, “-jar”, “/my-app-1.0-SNAPSHOT.jar”] 

BuildKit的安全功能

BuildKit具有安全功能,下面的示例中,我們使用了–mount=type=secret隱藏了一些機密文件,例如~/.aws/credentials。 

  1. FROM <baseimage>  
  2. RUN …  
  3. RUN --mount=type=secret,id=aws,target=/root/.aws/credentials,required \  
  4. ./fetch-assets-from-s3.sh  
  5. RUN ./build-scripts.sh  

要構建此Dockerfile,需要使用–secret參數: 

  1. docker build --secret id=aws,src=~/.aws/credentials 

還有為了提高安全性,避免使用諸如COPY ./keys/private.pem /root .ssh/private.pem之類的命令,我們可以使用BuildKit中的ssh解決此問題: 

  1. FROM alpine  
  2. RUN apk add --no-cache openssh-client  
  3. RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts  
  4. ARG REPO_REF=19ba7bcd9976ef8a9bd086187df19ba7bcd997f2  
  5. RUN --mount=type=ssh,required git clone git@github.com:org/repo /work && cd /work && git checkout -b $REPO_REF 

要構建此Dockerfile,你需要在ssh-agent中加載到你的SSH私鑰。 

  1. eval $(ssh-agent)  
  2. ssh-add ~/.ssh/id_rsa # this is the SSH key default location  
  3. docker build --ssh=default . 

結論

本文,我們介紹了使用Docker BuildKit優化Dockerfile,并因此加快了鏡像構建時間。這些速度的提高,可以幫助我們提高效率和節省計算能力。 

 

責任編輯:龐桂玉 來源: 馬哥Linux運維
相關推薦

2023-06-08 07:37:42

Docker容器

2014-11-18 10:37:15

dockerlinux技巧

2022-10-21 16:07:10

編碼器自然語言模型

2019-03-15 15:00:49

Webpack構建速度前端

2023-09-25 10:19:01

模型App開源

2021-02-24 09:15:48

kubernetes混合云云端

2019-10-21 11:43:00

DockerGradleJava

2022-07-27 09:59:58

前端Webpack

2024-03-06 18:11:06

Docker鏡像技術

2022-12-08 16:02:39

數據架構工具

2014-07-18 09:59:17

移動webJavascript移動Web

2011-12-15 13:28:57

2017-11-22 13:01:03

Go技術棧構建

2012-10-30 10:09:56

Redis

2022-04-22 14:41:12

美團慢查詢數據庫

2021-05-17 09:27:07

項目實戰優化項目構建時間

2017-04-18 21:27:01

AndroidAPP構建速度

2018-06-26 10:34:39

云遷移架構云計算

2025-05-22 06:34:28

2018-10-25 14:00:58

LinuxSlax
點贊
收藏

51CTO技術棧公眾號

日欧美一区二区| 国产美女视频一区二区| 久久精子c满五个校花| 国产精品久久久久久久久久免费| 国产农村妇女精品一区| 国产精区一区二区| 色欧美日韩亚洲| 亚洲在线观看一区| 日本xxxx人| 奇米影视一区二区三区| 欧美二区乱c黑人| 亚洲图片另类小说| 玖玖玖电影综合影院| 婷婷丁香激情综合| 欧美亚洲视频一区| 三级在线观看| 国产精品亚洲专一区二区三区| 国内偷自视频区视频综合| 欧美丰满老妇熟乱xxxxyyy| 亚洲精品观看| 欧美绝品在线观看成人午夜影视| 欧美精品自拍视频| 国产成人在线视频免费观看| 久久伊99综合婷婷久久伊| 亚洲精品女av网站| 亚洲高清视频免费观看| 亚洲黄色三级| 久久成人人人人精品欧| 亚洲欧洲国产视频| 亚洲国产伊人| 欧美中文字幕一二三区视频| 欧美国产日韩激情| 国产淫片在线观看| 欧美国产成人精品| 欧美日韩一区二区三区在线视频 | 少妇高潮一69aⅹ| a屁视频一区二区三区四区| 偷拍亚洲欧洲综合| 妞干网视频在线观看| 国产秀色在线www免费观看| 久久精品一区二区三区四区| 精品久久久久久一区二区里番| 99国产精品久久久久久久成人| 日韩国产在线一| 清纯唯美亚洲激情| 中国一级免费毛片| 亚洲久久在线| 欧美精品久久久久久久免费观看| 国产尤物在线播放| 五月激情综合| 久久精品国产亚洲一区二区| 久久久免费看片| 免费不卡中文字幕在线| 亚洲欧美国产高清va在线播| 亚洲熟女乱综合一区二区三区| 亚洲一区二区三区四区电影| 日韩欧美中文字幕公布| 亚洲自拍第三页| 高清精品久久| 3d动漫精品啪啪1区2区免费| av网站在线不卡| 久久爱.com| 欧美精品丝袜中出| 少妇愉情理伦片bd| 在线精品国产亚洲| 亚洲国产日韩精品在线| 黄色网址在线视频| 一区二区三区四区在线看| 亚洲欧美福利视频| 亚洲AV成人无码网站天堂久久| 日韩片欧美片| 久久夜色撩人精品| 五月天av网站| 在线日韩视频| 欧美在线免费看| 波多野结衣在线观看视频| 免费成人av资源网| 成人网欧美在线视频| 亚洲精品国产suv一区| 99久久国产综合精品色伊| 日本10禁啪啪无遮挡免费一区二区| 国产在线高清| 亚洲色欲色欲www| 精品成在人线av无码免费看| 亚洲第一av| 精品视频123区在线观看| 第一区免费在线观看| 2021年精品国产福利在线| 精品亚洲一区二区| 美国黄色片视频| 红桃视频国产一区| 日本亚洲欧美三级| 国产美女三级无套内谢| 不卡高清视频专区| 日韩在线电影一区| 四虎亚洲成人| 日本乱人伦一区| 日本黄色一级网站| 国产精品45p| 亚洲人成在线播放| 免费在线观看黄视频| 视频一区中文字幕国产| 成人性生交大片免费看小说| 性xxxx搡xxxxx搡欧美| 国产精品久久久久久一区二区三区| 丁香色欲久久久久久综合网| 97天天综合网| 欧美猛男男办公室激情| 亚洲第一黄色网址| 伊人色**天天综合婷婷| 国产成人综合av| 欧美一级淫片aaaaaa| 国产精品久久一卡二卡| 国产免费一区二区三区视频| 精品一区二区三区视频在线播放 | 91精品久久久久久久久久 | av亚洲产国偷v产偷v自拍| 亚洲人成网站在线观看播放| hd国产人妖ts另类视频| 51精品秘密在线观看| 亚洲欧美va天堂人熟伦 | 亚洲国产高清在线| 国精产品一区一区三区视频| 四虎精品永久免费| 一本一道久久a久久精品逆3p| 国产成人精品av久久| 国产一区激情在线| 亚洲欧美日韩另类精品一区二区三区 | 久久九九精品99国产精品| av图片在线观看| 成人性生交大片免费看视频在线| 亚洲三区在线| 成人va天堂| 日韩国产在线播放| 日本三级欧美三级| 粉嫩aⅴ一区二区三区四区| 尤物国产精品| 免费视频成人| 在线观看成人黄色| 国产日韩久久久| 国产亚洲精品bt天堂精选| 久久婷婷五月综合色国产香蕉| www国产精品| 欧美美女18p| 国产xxxxxx| 伊人婷婷欧美激情| 亚洲一区二区图片| 一区二区电影在线观看| 91九色单男在线观看| 男人资源在线播放| 欧美丰满少妇xxxxx高潮对白| 三年中国中文观看免费播放| 日日夜夜免费精品视频| 日本精品国语自产拍在线观看| 欧美18av| 中文字幕不卡av| 亚洲熟妇无码久久精品| 国产精品嫩草久久久久| wwwwwxxxx日本| 888久久久| 91偷拍精品一区二区三区| 亚洲卡一卡二| 亚洲精品一区二区三区蜜桃下载| 久久久久99精品成人片毛片| 成人性色生活片免费看爆迷你毛片| 成人午夜免费在线视频| 老汉色老汉首页av亚洲| 欧美最猛性xxxxx免费| 酒色婷婷桃色成人免费av网| 欧洲视频一区二区| 成人欧美一区二区三区黑人一| 国产制服丝袜一区| 久久久久免费看黄a片app| 亚洲激情播播| 国产精品视频自拍| av网址在线| 亚洲黄色在线看| 中文字幕 国产精品| 亚洲丝袜美腿综合| 国产a级黄色片| 天堂va蜜桃一区二区三区漫画版| 亚洲欧美精品| www国产精品| 国产精品成av人在线视午夜片| 五月天婷婷在线视频| 精品欧美乱码久久久久久1区2区| 日本一区二区三区精品| 国产精品色哟哟| av电影中文字幕| 日韩中文字幕一区二区三区| 最近免费观看高清韩国日本大全| 天堂av一区| 日韩暖暖在线视频| 伊人春色在线观看| 亚洲免费伊人电影在线观看av| 亚洲综合精品视频| 天天综合网 天天综合色| 久久久久久成人网| 成人激情小说乱人伦| 欧美午夜aaaaaa免费视频| 韩国欧美一区| 亚洲免费不卡| 欧美日韩大片免费观看| 91久久久久久久久久久| 日本三级一区| 欧美精品一二区| 国产精品视频一区二区久久| 精品三级av在线| 中文字幕一区二区三区四区视频| 亚洲福利国产精品| 91麻豆免费视频网站| 久久精品视频免费| 精品久久久久久无码人妻| 免费观看久久久4p| 色综合av综合无码综合网站| 欧美~级网站不卡| 亚洲巨乳在线观看| 九九热线有精品视频99| 国产偷久久久精品专区| 电影一区二区三区久久免费观看| 国产精品7m视频| 九色porny丨首页入口在线| 美女国内精品自产拍在线播放| 北条麻妃在线| 亚洲欧美在线看| 香蕉视频免费在线看| 精品99久久久久久| 超碰在线人人干| 91麻豆精品国产91久久久久| 最近日韩免费视频| 欧美性少妇18aaaa视频| 亚洲精品1区2区3区| 亚洲国产一区二区视频| 欧美日韩国产精品一区二区三区| 亚洲国产成人午夜在线一区| 国产成人无码精品久久二区三| 成人毛片视频在线观看| 成人一区二区三区仙踪林| 激情小说亚洲一区| 一区二区三区欧美精品| 免费高清在线一区| 污色网站在线观看| 蜜臀av一区二区在线免费观看| 亚洲精品乱码久久久久久自慰| 一本色道久久综合一区| 亚洲人精品午夜射精日韩 | 国产精品久久久久毛片| 欧美日韩一级二级三级| 中文字幕第三页| 欧美日韩国产免费| 亚洲香蕉在线视频| 在线播放国产精品二区一二区四区| 在线视频 91| 欧美精品三级日韩久久| 国产男男gay体育生白袜| 5858s免费视频成人| 国产免费一区二区三区最新不卡 | 性欧美18一19性猛交| 日韩精品一区二区三区在线| 亚洲成人精品女人久久久| 精品久久久久久久久久久院品网| 内射无码专区久久亚洲| 日韩电视剧在线观看免费网站 | 日韩在线欧美在线国产在线| 生活片a∨在线观看| 久久夜色精品国产欧美乱| 色呦呦在线免费观看| 97色在线观看免费视频| videos性欧美另类高清| 国产精品日韩久久久久| www.久久爱.com| 国产精品日韩欧美一区二区三区| 美女一区二区在线观看| 日本黑人久久| 在线电影一区二区| 日韩国产一级片| 久久久久久夜| 久久久精品高清| 国产69精品久久777的优势| 欧美bbbbb性bbbbb视频| 国产精品免费丝袜| 国产少妇在线观看| 精品美女国产在线| 在线视频免费观看一区| 精品蜜桃在线看| 久久免费看视频| 久久成人免费视频| 亚洲精品动漫| 成人性生交大片免费观看嘿嘿视频| 成人自拍在线| 日韩欧美99| 欧美一区不卡| 国产一区亚洲二区三区| 国产乱人伦偷精品视频免下载| 亚州av综合色区无码一区| 国产精品无遮挡| 久久9999久久免费精品国产| 在线影视一区二区三区| 亚洲第一页视频| 亚洲午夜女主播在线直播| 亚洲夜夜综合| 国产精品 欧美在线| 第四色在线一区二区| 视频一区二区三区在线观看| 欧美精品国产一区| 香蕉视频禁止18| 91天堂素人约啪| 久久久综合久久久| 欧美日韩国产高清一区二区三区| 特级丰满少妇一级aaaa爱毛片| 丝袜情趣国产精品| 亚洲欧美se| 国产成人免费电影| 国产精品黑丝在线播放 | 日本在线一级片| 在线一区二区三区| 五月激情丁香婷婷| 久久99热精品| 国产午夜久久av| 亚洲图片小说在线| 日韩精品每日更新| 国产国语性生话播放| 亚洲精品久久嫩草网站秘色| 亚洲无码久久久久| 亚洲色图18p| 台湾佬中文娱乐网欧美电影| 国产精品日韩二区| 亚洲福利电影| 无码人妻久久一区二区三区蜜桃| 亚洲丝袜自拍清纯另类| 一级成人免费视频| 色综久久综合桃花网| 草莓视频成人appios| 欧美日韩综合精品| 一区二区三区国产在线| 日本69式三人交| 亚洲国产aⅴ天堂久久| 性欧美8khd高清极品| 九九视频这里只有精品| 精品一区二区三区免费看| 三年中国中文在线观看免费播放| 美国av一区二区| 精品一区二区6| 欧美色图天堂网| 2019中文字幕在线视频| 国产精品私拍pans大尺度在线| 成人在线国产| 99日在线视频| 亚洲欧美电影一区二区| av网站在线免费看| 欧美高清视频一区二区| 97精品久久| 中文字幕无码精品亚洲资源网久久| 成人午夜在线播放| 日本一区二区欧美| 日韩精品免费综合视频在线播放| 在线精品亚洲欧美日韩国产| 欧美性xxxx69| 奇米精品一区二区三区在线观看 | 成人国产精品一级毛片视频| 一级在线免费视频| 亚洲天堂av一区| 亚洲AV无码一区二区三区性| 久久久久久亚洲精品中文字幕| 韩国女主播一区二区三区| 欧美牲交a欧美牲交| 国产视频亚洲色图| 91高潮大合集爽到抽搐| 九九九久久久久久| 日韩三级毛片| 九九热在线免费| 亚洲品质自拍视频| 全国男人的天堂网| 国产成人一区二区三区小说| 四虎成人精品永久免费av九九| 樱花草www在线| 午夜精品久久久久久久久久久| 久久久资源网| 亚洲bt天天射| 亚洲主播在线| 99久久精品久久亚洲精品| 日韩一区二区免费视频| 亚洲私拍视频| 在线免费观看成人| 成人精品一区二区三区中文字幕 | 四虎亚洲成人| 欧洲一区二区在线观看| 国产乱子伦一区二区三区国色天香| 精品91久久久| 久久天堂av综合合色| 林ゆな中文字幕一区二区| 亚洲欧美自偷自拍另类| 亚洲国产精品久久艾草纯爱 | 99精品国产高清一区二区麻豆| 人妻精品无码一区二区三区| 中文字幕在线一区| 亚洲av成人精品毛片| 91精品久久久久久久久久另类 | av网站免费大全| 日韩av免费看|