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

常用容器鏡像構建工具和方案介紹

云計算
在使用 Docker 的時候一般情況下我們都會直接使用 docker build 來構建鏡像,切換到 Containerd 的時候,接下來我們就來介紹下在 Containerd 容器運行時下面鏡像構建的主要工具和方案。

[[420216]]

在使用 Docker 的時候一般情況下我們都會直接使用 docker build 來構建鏡像,切換到 Containerd 的時候,上節我們也介紹了可以使用 nerdctl + buildkit 來構建容器鏡像,除了這些方式之外,還有其他常見的鏡像構建工具嗎?

接下來我們就來介紹下在 Containerd 容器運行時下面鏡像構建的主要工具和方案。

使用 Docker 做鏡像構建服務

在 Kubernetes 集群中,部分 CI/CD 流水線業務可能需要使用 Docker 來提供鏡像打包服務。可通過宿主機的 Docker 實現,將 Docker 的 UNIX Socket(/var/run/docker.sock) 通過 hostPath 掛載到 CI/CD 的業務 Pod 中,之后在容器里通過 UNIX Socket 來調用宿主機上的 Docker 進行構建,這個就是之前我們使用較多的 Docker outside of Docker 方案。該方式操作簡單,比真正意義上的 Docker in Docker 更節省資源,但該方式可能會遇到以下問題:

  • 無法運行在 Runtime 是 containerd 的集群中。
  • 如果不加以控制,可能會覆蓋掉節點上已有的鏡像。
  • 在需要修改 Docker Daemon 配置文件的情況下,可能會影響到其他業務。
  • 在多租戶的場景下并不安全,當擁有特權的 Pod 獲取到 Docker 的 UNIX Socket 之后,Pod 中的容器不僅可以調用宿主機的 Docker 構建鏡像、刪除已有鏡像或容器,甚至可以通過 docker exec 接口操作其他容器。

對于部分需要 containerd 集群,而不改變 CI/CD 業務流程仍使用 Docker 構建鏡像一部分的場景,我們可以通過在原有 Pod 上添加 DinD 容器作為 Sidecar 或者使用 DaemonSet 在節點上部署專門用于構建鏡像的 Docker 服務。

使用 DinD 作為 Pod 的 Sidecar

如下所示,我們有一個名為 clean-ci 的容器,會該容器添加一個 Sidecar 容器,配合 emptyDir,讓 clean-ci 容器可以通過 UNIX Socket 訪問 DinD 容器:

  1. apiVersion: v1 
  2. kind: Pod 
  3. metadata: 
  4.   name: clean-ci 
  5. spec: 
  6.   containers: 
  7.   - name: dind 
  8.     image: 'docker:stable-dind' 
  9.     command: 
  10.     - dockerd 
  11.     - --host=unix:///var/run/docker.sock 
  12.     - --host=tcp://0.0.0.0:8000 
  13.     securityContext: 
  14.       privileged: true 
  15.     volumeMounts: 
  16.     - mountPath: /var/run 
  17.       name: cache-dir 
  18.   - name: clean-ci 
  19.     image: 'docker:stable' 
  20.     command: ["/bin/sh"
  21.     args: ["-c""docker info >/dev/null 2>&1; while [ $? -ne 0 ] ; do sleep 3; docker info >/dev/null 2>&1; done; docker pull library/busybox:latest; docker save -o busybox-latest.tar library/busybox:latest; docker rmi library/busybox:latest; while true; do sleep 86400; done"
  22.     volumeMounts: 
  23.     - mountPath: /var/run 
  24.       name: cache-dir 
  25.   volumes: 
  26.   - name: cache-dir 
  27.     emptyDir: {} 

通過上面添加的 dind 容器來提供 dockerd

服務,然后在業務構建容器中通過 emptyDir{} 來共享 /var/run 目錄,業務容器中的 docker 客戶端就可以通過 unix:///var/run/docker.sock 來與 dockerd 進行通信。

使用 DaemonSet 在每個 containerd 節點上部署 Docker除了上面的 Sidecar 模式之外,還可以直接在 containerd 集群中通過 DaemonSet 來部署 Docker,然后業務構建的容器就和之前使用的模式一樣,直接通過 hostPath 掛載宿主機的 unix:///var/run/docker.sock 文件即可。

使用以下 YAML 部署 DaemonSet。示例如下:

  1. apiVersion: apps/v1 
  2. kind: DaemonSet 
  3. metadata: 
  4.   name: docker-ci 
  5. spec: 
  6.   selector: 
  7.     matchLabels: 
  8.       app: docker-ci 
  9.   template: 
  10.     metadata: 
  11.       labels: 
  12.         app: docker-ci 
  13.     spec: 
  14.       containers: 
  15.       - name: docker-ci 
  16.         image: 'docker:stable-dind' 
  17.         command: 
  18.         - dockerd 
  19.         - --host=unix:///var/run/docker.sock 
  20.         - --host=tcp://0.0.0.0:8000 
  21.         securityContext: 
  22.           privileged: true 
  23.         volumeMounts: 
  24.         - mountPath: /var/run 
  25.           name: host 
  26.       volumes: 
  27.       - name: host 
  28.         hostPath: 
  29.           path: /var/run 

上面的 DaemonSet 會在每個節點上運行一個 dockerd 服務,這其實就類似于將以前的 docker 服務放入到了 Kubernetes 集群中進行管理,然后其他的地方和之前沒什么區別,甚至都不需要更改以前方式的任何東西。將業務構建 Pod 與 DaemonSet 共享同一個 hostPath,如下所示:

  1. apiVersion: v1 
  2. kind: Pod 
  3. metadata: 
  4.   name: clean-ci 
  5. spec: 
  6.   containers: 
  7.   - name: clean-ci 
  8.     image: 'docker:stable' 
  9.     command: ["/bin/sh"
  10.     args: ["-c""docker info >/dev/null 2>&1; while [ $? -ne 0 ] ; do sleep 3; docker info >/dev/null 2>&1; done; docker pull library/busybox:latest; docker save -o busybox-latest.tar library/busybox:latest; docker rmi library/busybox:latest; while true; do sleep 86400; done"
  11.     volumeMounts: 
  12.     - mountPath: /var/run 
  13.       name: host 
  14.   volumes: 
  15.   - name: host 
  16.     hostPath: 
  17.       path: /var/run 

Kaniko

Kaniko 是 Google 開源的一款容器鏡像構建工具,可以在容器或 Kubernetes 集群內從 Dockerfile 構建容器鏡像,Kaniko 構建容器鏡像時并不依賴于 docker daemon,也不需要特權模式,而是完全在用戶空間中執行 Dockerfile 中的每條命令,這使得在無法輕松或安全地運行 docker daemon 的環境下構建容器鏡像成為了可能。 

kaniko

Kaniko 構建容器鏡像時,需要使用 Dockerfile、構建上下文、以及構建成功后鏡像在倉庫中的存放地址。此外 Kaniko 支持多種方式將構建上下文掛載到容器中,比如可以使用本地文件夾、GCS bucket、S3 bucket 等方式,使用 GCS 或者 S3 時需要把上下文壓縮為 tar.gz,kaniko 會自行在構建時解壓上下文。

Kaniko executor 讀取 Dockerfile 后會逐條解析 Dockerfile 內容,一條條執行命令,每一條命令執行完以后會在用戶空間下面創建一個 snapshot,并與存儲與內存中的上一個狀態進行比對,如果有變化,就將新的修改生成一個鏡像層添加在基礎鏡像上,并且將相關的修改信息寫入鏡像元數據中,等所有命令執行完,kaniko 會將最終鏡像推送到指定的遠端鏡像倉庫。。整個過程中,完全不依賴于 docker daemon。

如下所示我們有一個簡單的 Dokerfile 示例:

  1. FROM alpine:latest 
  2. RUN apk add busybox-extras curl 
  3. CMD ["echo","Hello Kaniko"

然后我們可以啟動一個 kaniko 容器去完成上面的鏡像構建,當然也可以直接在 Kubernetes 集群中去運行,如下所示新建一個 kaniko 的 Pod 來構建上面的鏡像:

  1. apiVersion: v1 
  2. kind: Pod 
  3. metadata: 
  4.   name: kaniko 
  5. spec: 
  6.   containers: 
  7.   - name: kaniko 
  8.     image: gcr.io/kaniko-project/executor:latest 
  9.     args: ["--dockerfile=/workspace/Dockerfile"
  10.           "--context=/workspace/"
  11.           "--destination=cnych/kaniko-test:v0.0.1"
  12.     volumeMounts: 
  13.       - name: kaniko-secret 
  14.         mountPath: /kaniko/.docker 
  15.       - name: dockerfile 
  16.         mountPath: /workspace/Dockerfile 
  17.         subPath: Dockerfile 
  18.   volumes: 
  19.     - name: dockerfile 
  20.       configMap: 
  21.         name: dockerfile 
  22.     - name: kaniko-secret 
  23.         projected: 
  24.          sources: 
  25.          - secret: 
  26.             name: regcred 
  27.             items: 
  28.             - key: .dockerconfigjson 
  29.               path: config.json 

上面的 Pod 執行的 args 參數中,主要就是指定 kaniko 運行時需要的三個參數: Dockerfile、構建上下文以及遠端鏡像倉庫。

推送至指定遠端鏡像倉庫需要 credential 的支持,所以需要將 credential 以 secret 的方式掛載到 /kaniko/.docker/ 這個目錄下,文件名稱為 config.json,內容如下:

  1.     "auths": { 
  2.         "https://index.docker.io/v1/": { 
  3.             "auth""AbcdEdfgEdggds=" 
  4.        } 
  5.     } 
  6.  

其中 auth 的值為: docker_registry_username:docker_registry_password base64 編碼過后的值。然后 Dockerfile 通過 Configmap 的形式掛載進去,如果構建上下文中還有其他內容也需要一同掛載進去。

關于 kaniko 的更多使用方式可以參考官方倉庫:https://github.com/GoogleContainerTools/kaniko。

Jib

如果你是在 Java 環境下面,還可以使用 Jib 來構建鏡像,Jib 也是 Google 開源的,只是是針對 Java 容器鏡像構建的工具。

Jib

通過使用 Jib,Java 開發人員可以使用他們熟悉的 Java 工具來構建鏡像。Jib 是一個快速而簡單的容器鏡像構建工具,它負責處理將應用程序打包到容器鏡像中所需的所有步驟,它不需要你編寫 Dockerfile 或安裝 Docker,而且可以直接集成到 Maven 和 Gradle 中,只需要將插件添加到構建中,就可以立即將 Java 應用程序容器化。

Jib 利用了 Docker 鏡像的分層機制,將其與構建系統集成,并通過以下方式優化 Java 容器鏡像的構建:

  • 簡單:Jib 使用 Java 開發,并作為 Maven 或 Gradle 的一部分運行。你不需要編寫 Dockerfile 或運行 Docker 守護進程,甚至無需創建包含所有依賴的大 JAR 包。因為 Jib 與 Java 構建過程緊密集成,所以它可以訪問到打包應用程序所需的所有信息。
  • 快速:Jib 利用鏡像分層和緩存來實現快速、增量的構建。它讀取你的構建配置,將你的應用程序組織到不同的層(依賴項、資源、類)中,并只重新構建和推送發生變更的層。在項目進行快速迭代時,Jib 只將發生變更的層(而不是整個應用程序)推送到鏡像倉庫來節省寶貴的構建時間。
  • 可重現:Jib 支持根據 Maven 和 Gradle 的構建元數據進行聲明式的容器鏡像構建,因此,只要輸入保持不變,就可以通過配置重復創建相同的鏡像。

以下示例將使用 Jib 提供的 gradle 插件集成到一個 spring boot 項目的構建中,并展示 Jib 如何簡單快速的構建鏡像。

首先,在項目的 build.gradle 構建文件中引入 jib 插件:

  1. buildscript{ 
  2.     ... 
  3.     dependencies { 
  4.         ... 
  5.         classpath "gradle.plugin.com.google.cloud.tools:jib-gradle-plugin:1.1.2" 
  6.     } 
  7.  
  8. apply plugin: 'com.google.cloud.tools.jib' 

如果需要配置相關參數,可以使用下面的 gradle 配置:

  1. jib { 
  2.     from { 
  3.         image = 'harbor.k8s.local/library/base:1.0' 
  4.         auth { 
  5.             username = '********' 
  6.             password = '********' 
  7.         } 
  8.     } 
  9.     to { 
  10.         image = 'harbor.k8s.local/library/xxapp:1.0' 
  11.         auth { 
  12.             username = '********' 
  13.             password = '********' 
  14.         } 
  15.     } 
  16.     container { 
  17.         jvmFlags = ['-Djava.security.egd=file:/dev/./urandom'
  18.         ports = ['8080'
  19.         useCurrentTimestamp = false 
  20.         workingDirectory = "/app" 
  21.     } 

然后執行以下命令就可以直接觸發構建生成容器鏡像了:

  1. # 構建 jib.to.image 指定的鏡像,并且推送至鏡像倉庫 
  2. $ gradle jib 

如果你還想將構建的鏡像保存到本地 dockerd,則可以使用下面的命令構建:

  1. gradle jibDockerBuild 

當然還有前文我們介紹的 buildkit 可以用于鏡像構建,還有一個經常和 Podman 搭配使用的 Buildah,是一個可以用于構建符合 OCI 標準容器鏡像的命令行工具,有了這些工具,在構建容器鏡像時已經完全可以脫離 docker daemon 了,而且這些工具都能很好的與 Kubernetes 集成,支持在容器環境下完成構建。

 

責任編輯:姜華 來源: k8s技術圈
相關推薦

2010-02-03 15:09:13

Python 構建工具

2016-01-31 09:47:13

Java程序員構建工具

2023-03-15 23:59:13

前端構建工具

2023-08-22 10:13:53

模塊工具JavaScrip

2024-06-04 22:04:39

2020-09-07 14:40:20

Vue.js構建工具前端

2019-09-10 13:34:30

Linux操作系統軟件

2011-12-07 10:56:29

ApacheMakeJava

2013-01-31 10:15:28

JavaScriptGrunt

2021-05-25 16:34:06

JavaScript前端

2011-12-30 09:23:25

JavaPhing

2021-05-31 17:37:26

ViteReactesbuild

2021-06-05 18:01:05

工具Rollup前端

2022-05-16 09:14:28

前端構建工具

2016-11-17 16:38:14

華為計算平臺

2022-01-17 07:50:36

Maven Gradle 工具

2020-04-23 08:55:01

LinuxGradle工具

2025-03-26 01:00:00

2022-11-30 21:32:23

開源buildah工具

2019-05-22 15:36:22

Linux容器鏡像
點贊
收藏

51CTO技術棧公眾號

欧美天堂在线视频| 国产黄色录像视频| 成人影院网站| 欧美激情在线观看视频免费| 91精品国产综合久久男男| 中文字幕av免费在线观看| 欧美绝顶高潮抽搐喷水合集| 欧美亚洲国产一区二区三区va | 午夜精品久久久久| 日本高清视频一区二区三区| 99精品视频免费看| 久久久久久久高潮| 欧美国产日韩二区| 久久午夜精品视频| 欧美交a欧美精品喷水| 555夜色666亚洲国产免| 春日野结衣av| 色av手机在线| 国产欧美日韩久久| 精品国产一区二区三区免费| 国产精品久久久久久免费| 欧美亚洲三区| 久久久久久久久久久免费| 五月天色婷婷丁香| 国产一区二区亚洲| 日韩成人av网址| 天天爽夜夜爽视频| 欧美久久久网站| 色综合天天在线| www..com日韩| 最近中文字幕免费mv2018在线| 国产欧美日韩在线观看| 久久久久久久免费| 三级视频在线看| 国产九九视频一区二区三区| 国产精品普通话| www.久久精品视频| 亚洲免费综合| 97国产在线观看| 成人免费看片98| 欧美在线三级| 欧美成人免费全部| 国产极品国产极品| 小处雏高清一区二区三区| 在线视频一区二区| www.av天天| 久草精品在线| 国产亚洲欧洲高清| xxxx日本黄色| 欧美美女视频| 中文日韩在线观看| 欧美巨胸大乳hitomi| 欧美三级情趣内衣| 日韩亚洲成人av在线| 在线观看天堂av| 日韩欧美精品一区| 在线观看欧美日韩国产| 五月婷婷婷婷婷| 国产精品传媒精东影业在线| 色偷偷88888欧美精品久久久| 亚洲一二三四视频| 色97色成人| 久久夜精品香蕉| 一区视频免费观看| 亚洲私人影院| 91黑丝在线观看| 色一情一乱一伦| 日韩av成人高清| 国产色视频一区| 国产成人三级在线播放| 成人爽a毛片一区二区免费| 国产原创精品| 成人在线二区| 1000精品久久久久久久久| 欧美国产视频一区| 国产乱码精品一区二三赶尸艳谈| 狠狠综合久久av一区二区小说| 亚洲人成无码www久久久| 久久亚洲国产精品尤物| 日韩欧美色综合| 日本免费福利视频| 手机在线一区二区三区| 久久99精品国产99久久6尤物| 久久久久亚洲av成人片| 久久精品男女| 亚洲在线一区二区| 日韩大片b站免费观看直播| 国产精品色一区二区三区| 日韩欧美视频免费在线观看| 草草视频在线| 欧美三电影在线| 国产一级免费片| 日韩国产专区| 午夜免费在线观看精品视频| 中国老头性行为xxxx| 成人一二三区视频| 亚欧精品在线| 久久免费电影| 欧美日韩三级一区| 中文字幕 日本| 成人直播大秀| 欧美激情视频网站| 在线观看免费观看在线| 成人av资源网站| 中文字幕99| 成人性生活av| 精品999在线播放| 毛片久久久久久| 免费日韩av片| 国产成人精品日本亚洲11| av电影在线播放高清免费观看| 亚洲一区二区影院| 色播五月综合网| 五月综合久久| 欧美激情国产精品| 97在线播放免费观看| 久久久久九九视频| 免费超爽大片黄| 国产aa精品| 一区二区在线视频播放| 久草视频在线观| 国产精品456露脸| 亚洲一卡二卡区| 日本不卡一二三| 精品成人a区在线观看| 久久久久亚洲av无码专区体验| 日韩成人一级大片| 蜜桃av噜噜一区二区三区| 日本h片在线| 91精品国产色综合久久不卡蜜臀 | 最新国产黄色网址| japanese国产精品| 日韩免费观看视频| 精品美女视频在线观看免费软件 | 777久久久精品一区二区三区| 91国内精品| 欧美成年人在线观看| 中国一级特黄视频| 一本大道久久精品懂色aⅴ| 欧美日韩国产高清视频| segui88久久综合9999| 日本一本在线观看| 91免费国产在线| 免费无码毛片一区二三区| a看欧美黄色女同性恋| 欧美日韩成人黄色| 午夜精品久久久久久久96蜜桃 | 色噜噜狠狠色综合网| 最新中文字幕在线播放| 亚洲另类图片色| 亚洲免费黄色网址| 久久久噜噜噜久久中文字幕色伊伊| 国产免费观看高清视频| 偷窥自拍亚洲色图精选| 青草成人免费视频| 成人在线免费观看| 欧美日韩一区成人| 精品无码久久久久成人漫画 | 中文幕无线码中文字蜜桃| 国产日韩欧美一区| 日韩精品不卡| 天天综合91| 欧美乱人伦中文字幕在线| 成人免费公开视频| 精品国产乱码久久久久久虫虫漫画| 制服丝袜第二页| 久久精品人人做人人爽电影蜜月| 日韩福利二区| vam成人资源在线观看| 美日韩在线视频| 丰满人妻一区二区三区免费视频| 午夜精品免费在线| 人妻少妇无码精品视频区| 乱一区二区av| 日本一区二区三区四区五区六区| 国产福利一区二区精品秒拍| 日本成熟性欧美| 三区四区在线视频| 欧美videos大乳护士334| 天天做天天爱夜夜爽| 日本一区二区免费在线观看视频| 无套白嫩进入乌克兰美女| 日韩午夜精品| 午夜精品一区二区三区四区| 伊人精品综合| 日韩av电影在线播放| 成人免费高清| 国产午夜精品麻豆| 99久久久无码国产精品免费| 欧美日韩视频在线| 内射一区二区三区| 91丨九色porny丨蝌蚪| 97超碰人人爽| 亚洲国产高清视频| 一级特黄录像免费播放全99| 红杏一区二区三区| 国产美女精品视频| 草草视频在线| 久久精品91久久久久久再现| 色猫av在线| 欧美一区二区观看视频| 国产污视频网站| 亚洲一区视频在线观看视频| 一级特黄曰皮片视频| 岛国精品一区二区| 日本不卡一区二区在线观看| 国产欧美高清| 狠狠干视频网站| 欧美日韩一二| 精品无人乱码一区二区三区的优势| 婷婷久久综合九色综合99蜜桃| 456亚洲影院| 日日夜夜天天综合入口| 中文字幕一区二区精品| 蜜桃视频在线入口www| 精品国产乱码久久久久久图片 | 天堂电影一区| 欧美华人在线视频| 黄网站在线免费看| 一本一本久久a久久精品综合小说 一本一本久久a久久精品牛牛影视 | 欧美性猛交xxxx富婆弯腰| 青春草免费视频| 国产精品久线观看视频| 国产真实乱人偷精品人妻| jlzzjlzz国产精品久久| 成人在线短视频| 久草中文综合在线| 蜜臀av免费观看| 天堂久久一区二区三区| 国产一区二区在线视频播放| 亚洲高清成人| 女人色极品影院| 亚洲午夜精品一区 二区 三区| 亚洲在线欧美| 久久国产电影| 亚洲欧洲一区二区福利| 成人在线亚洲| 亚洲精品永久www嫩草| 欧洲乱码伦视频免费| 日本一区二区三区精品视频| 国产不卡av一区二区| 免费中文日韩| 国产尤物久久久| 日韩欧美国产二区| 欧美精品系列| 亚洲视频在线观看日本a| 日韩欧美午夜| 自拍偷拍一区二区三区| 中文字幕免费精品| 国产91沈先生在线播放| 欧美午夜一区| 欧美亚洲日本一区二区三区 | 日本免费色视频| 黄色日韩网站视频| 99视频在线观看视频| 高清av一区二区| 亚洲av成人无码一二三在线观看| 91免费观看在线| 四虎成人免费影院| 中文字幕一区二区三中文字幕| 2025国产精品自拍| 亚洲主播在线播放| 九九热在线免费观看| 在线视频欧美精品| 国产精品爽爽久久久久久| 91精品国产91久久综合桃花| 亚洲国产综合一区| 亚洲精品综合精品自拍| eeuss影院在线播放| 久久亚洲电影天堂| 国产调教在线| 国产精品黄色影片导航在线观看| 亚洲欧美一级| 国产一区二区视频在线免费观看| 国产精品欧美在线观看| 亚洲第一页在线视频| 激情视频一区| 午夜欧美福利视频| 国产不卡在线视频| 中文字幕一区二区三区人妻电影| 国产精品国产馆在线真实露脸 | 日韩精品电影在线观看| 亚洲一区二区福利视频| 成人手机在线视频| 黄色av片三级三级三级免费看| 亚洲一区二区三区在线看| 国产伦精品一区二区三区视频网站| 欧美福利视频一区| 四虎影视精品成人| 久久影院模特热| 欧美1级2级| 国产成人精品免费视频大全最热| 欧美日韩国产免费观看视频| 一卡二卡三卡视频| 麻豆精品久久久| 国产麻豆xxxvideo实拍| 日韩一区在线看| 日韩手机在线视频| 欧美大黄免费观看| av在线电影观看| 91精品国产高清久久久久久91| 91麻豆精品国产综合久久久 | 三区精品视频| 影音先锋久久久| 日韩av在线中文| 91在线小视频| 五月天丁香激情| 在线观看日韩毛片| 天天躁日日躁狠狠躁伊人| 久久久精品日本| 一区在线影院| 久久99精品久久久久久秒播放器| 伊人久久大香线| 视色视频在线观看| 久久你懂得1024| 日本一区二区三区免费视频| 91精品视频网| 91在线视频| 国产成人精品一区二区在线| 免费日韩一区二区三区| 丰满的少妇愉情hd高清果冻传媒| 狠狠色狠狠色综合系列| 国产18无套直看片| 色综合久久综合网97色综合| 人妻精品一区一区三区蜜桃91| 欧美xxxx18性欧美| 四虎影视国产精品| 一个色的综合| 麻豆精品一区二区| 女教师淫辱の教室蜜臀av软件| 少妇一级淫片免费放播放| 美女爽到高潮91| 国产高清一区二区三区四区| 黑丝美女久久久| 神马午夜在线观看| 欧美黄色三级网站| 无人区乱码一区二区三区| 欧美日韩亚洲国产成人| 极品少妇xxxx精品少妇偷拍| www.99re6| 欧美喷潮久久久xxxxx| 尤物网在线观看| 国产精品久久在线观看| 欧美精品乱码| 色噜噜狠狠永久免费| 国产精品久久久一本精品| 中文字字幕在线中文乱码| 最近的2019中文字幕免费一页| 精品美女一区| 午夜啪啪免费视频| 国产成人精品综合在线观看| 久久av高潮av无码av喷吹| 精品剧情v国产在线观看在线| 成人在线高清免费| 国偷自产av一区二区三区小尤奈| 亚洲大片av| 精品无码人妻一区二区免费蜜桃| 在线观看不卡一区| 欧美日韩在线看片| 999视频在线免费观看| 亚洲午夜极品| 亚洲午夜久久久久久久久红桃| 日本韩国欧美在线| 蜜桃视频网站在线观看| 亚洲自拍欧美色图| 亚洲国产专区| 国产成人福利在线| 欧美一区二区三区在线视频| 暧暧视频在线免费观看| 精品视频在线观看| 日本sm残虐另类| 黄色片在线观看网站| 日韩大陆毛片av| www.精品国产| 亚洲精品天堂成人片av在线播放| 91网站在线观看视频| 涩涩视频在线观看| 九九热在线精品视频| 性欧美lx╳lx╳| 国产又大又黄又粗又爽| 亚洲已满18点击进入久久| 四虎精品成人影院观看地址| 国产剧情日韩欧美| 亚洲国产片色| 国产精品视频看看| 亚洲激情在线观看视频免费| 电影在线观看一区二区| 国产精品三级一区二区| 国产欧美日本一区视频| 亚洲av无码专区在线| 国产精品com| 国自产拍偷拍福利精品免费一| mm131丰满少妇人体欣赏图| 日韩欧美在线网站| 国产精品久久久久av电视剧| 日韩精品久久一区二区| 国产日韩成人精品| 日本高清视频免费观看| 成人免费视频a| 日韩高清不卡一区二区三区|