精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

青青久久av北条麻妃黑人| 欧美成人bangbros| 中文字幕在线观看一区二区三区| 国产亚洲久一区二区| 88国产精品视频一区二区三区| 欧美一区二区三区视频免费| 一区二区传媒有限公司| 亚洲麻豆精品| 国产成a人亚洲精| 欧美综合一区第一页| 午夜爽爽爽男女免费观看| 另类视频一区二区三区| 日韩欧美中文第一页| 黑人巨大国产9丨视频| 欧洲毛片在线| 国产成人精品亚洲777人妖| 91sa在线看| 欧美日韩午夜视频| 国内精品久久久久久99蜜桃| 精品女同一区二区| 久久久久久久久久久久91| 51漫画成人app入口| 久久久久高清精品| 国产一区二区无遮挡| 国产又粗又猛又爽又黄91| 午夜综合激情| 午夜精品久久久久久久99黑人 | 不卡一区中文字幕| 成人午夜高潮视频| 少妇无套内谢久久久久| 亚洲巨乳在线| 欧美黑人xxxx| 日韩福利小视频| 欧美午夜精品一区二区三区电影| 亚洲高清在线观看| 在线观看你懂的视频| 黑人一区二区三区| 91电影在线观看| 久久久久久久久久久福利| 麻豆av在线播放| 亚洲免费色视频| 樱花www成人免费视频| 国产九色在线| 国产午夜一区二区三区| 免费精品视频一区二区三区| 天堂在线视频免费观看| 豆国产96在线|亚洲| 91久久精品www人人做人人爽 | 韩国女主播成人在线| 国产精品久久久久久久久久免费| 男人午夜免费视频| 亚洲在线免费| 青青精品视频播放| 日韩欧美成人一区二区三区| 在线午夜精品| 7m精品福利视频导航| 日产亚洲一区二区三区| 在线成人黄色| 欧美亚洲伦理www| chinese国产精品| 天堂va蜜桃一区二区三区漫画版| 国产成人精品电影| 中文永久免费观看| 久久爱另类一区二区小说| 91精品国产综合久久香蕉最新版| 一级黄色片在线| 激情五月激情综合网| 亚洲va久久久噜噜噜| www.日韩高清| av亚洲精华国产精华精华| 欧美h视频在线| 成人激情电影在线看| 国产精品免费久久久久| 91制片厂免费观看| 好久没做在线观看| 黑人欧美xxxx| 国产无遮挡猛进猛出免费软件 | 丝袜美腿亚洲一区| 国产精品美女午夜av| 国产免费的av| av电影在线观看一区| 欧美一区二区高清在线观看| 成人免费高清在线播放| 亚洲欧美另类小说| 国产资源在线视频| 成人国产激情| 日韩精品一区国产麻豆| 黄色a一级视频| 久久伦理在线| 午夜精品福利视频| 97超碰资源站| 成年人国产精品| 亚洲人体一区| 888av在线视频| 欧美另类一区二区三区| 色婷婷免费视频| 成人在线免费观看网站| 久久久久国产精品www| wwwwww在线观看| 国产69精品久久久久毛片| 欧美综合77777色婷婷| av在线播放国产| 色哟哟国产精品免费观看| 国产精品久久久久久久99| 日韩欧美影院| 欧美大片在线看免费观看| 激情网站在线观看| 粉嫩久久99精品久久久久久夜| 日韩欧美亚洲日产国产| 激情网站在线| 欧美一区二区视频观看视频| 久久精品成人av| 狠狠色丁香久久综合频道| 国产精品青青在线观看爽香蕉| 亚洲黄色小说网| 亚洲欧洲在线观看av| 青青草原av在线播放| theporn国产在线精品| 日韩视频欧美视频| 黄色av一区二区| 99久久精品国产观看| 400部精品国偷自产在线观看| gogo亚洲高清大胆美女人体 | 成人免费视频在线观看超级碰| 日韩成人黄色| 五月婷婷久久丁香| 三上悠亚 电影| 99精品美女| 国产精品吴梦梦| 国产午夜在线观看| 色婷婷一区二区三区四区| 波多野结衣有码| 国产精品a久久久久| 91人成网站www| av黄色在线观看| 日韩欧美成人区| av无码av天天av天天爽| 一本久道久久久| 国产亚洲一区在线播放| 超清av在线| 日韩欧美国产一二三区| 老妇女50岁三级| 国产在线一区观看| 黄色高清视频网站| 久久精品一级| 九九久久久久久久久激情| 国产毛片在线视频| 亚洲品质自拍视频| 91欧美一区二区三区| 国产精品99一区二区三区| 国产一区欧美二区三区| 日韩在线资源| 7799精品视频| 动漫性做爰视频| 国产黄色精品网站| 人体内射精一区二区三区| 国产suv精品一区| 97涩涩爰在线观看亚洲| 青青青免费视频在线2| 色婷婷综合视频在线观看| 国产精品久久免费观看| 免费在线观看日韩欧美| 亚洲自拍偷拍二区| 日韩精品中文字幕一区二区| 欧美激情一区二区三级高清视频 | 99国内精品久久| 成年人免费在线播放| 不卡视频在线| 91日本视频在线| free性m.freesex欧美| 精品国产乱码久久久久久图片| 日韩视频免费观看高清| 久久影视一区二区| 亚洲综合欧美激情| 一二三区不卡| 久久久久久高清| 福利一区视频| 欧美精品福利在线| 欧美亚洲日本| 欧美一区二区在线免费播放| 国产网站在线看| 欧美激情在线一区二区三区| 久久精品久久99| 国产午夜久久| 一区二区三区精品国产| 国产精品视屏| 国产精品入口免费视频一| 久色国产在线| 这里只有精品视频| 女人18毛片一区二区三区| 91福利小视频| 久久久久亚洲AV| 国产精品天美传媒| 亚洲视频 中文字幕| 欧美96一区二区免费视频| 免费的av在线| 欧美色蜜桃97| 精品欧美一区二区精品久久| 黄瓜视频成人app免费| 久久偷看各类女兵18女厕嘘嘘| 亚州男人的天堂| 欧美一级艳片视频免费观看| 五月天婷婷导航| 亚洲无线码一区二区三区| 男女男精品视频网站| av日韩在线网站| 成人不卡免费视频| 日韩精品亚洲一区二区三区免费| 300部国产真实乱| 日韩精品一区二区三区免费观影 | 欧美午夜理伦三级在线观看| 免费一级片视频| 国产精品久久99| 无码h肉动漫在线观看| av网站一区二区三区| 中文字幕无码毛片免费看| 麻豆精品国产91久久久久久| 免费观看精品视频| 精品动漫3d一区二区三区免费| 亚洲一区二区三区精品动漫| 亚洲精品亚洲人成在线观看| 96国产粉嫩美女| 亚洲午夜国产成人| 国产精品福利在线| 超碰aⅴ人人做人人爽欧美| 欧美激情国产精品| а√天堂资源地址在线下载| 最近2019中文字幕大全第二页| 深夜福利在线看| 亚洲精品国产综合久久| 亚洲成人中文字幕在线| 欧美一区二区精品| 国产一区二区三区中文字幕| 欧日韩精品视频| 无码人妻丰满熟妇区五十路| 精品久久久久久久中文字幕| 日本在线视频免费| 亚洲高清免费观看 | 日韩一级在线| 大伊香蕉精品视频在线| 国内自拍一区| av一区二区三区免费观看| 欧美不卡在线| 第九区2中文字幕| 欧美阿v一级看视频| 一级黄色片播放| 欧美另类综合| 久久艹国产精品| 亚洲韩日在线| 成人免费aaa| 国产精品日韩| 国产精彩免费视频| 日本怡春院一区二区| 日本新janpanese乱熟| 奇米一区二区三区| 污网站在线免费| 国产综合色产在线精品| 亚洲国产综合av| 国产凹凸在线观看一区二区| 亚洲少妇一区二区三区| 不卡电影免费在线播放一区| 国产精品无码在线| 久久精品男人天堂av| 992在线观看| 亚洲精品少妇30p| 国产一级一级片| 欧美性猛交xxxx免费看久久久| 国产美女激情视频| 欧美日韩国产中文| 精品人妻一区二区三区麻豆91 | 亚洲xxxx视频| 丁香一区二区| 欧美一区激情视频在线观看| 青青草成人影院| 欧美另类videosbestsex日本| 亚洲日本国产| 日本男人操女人| 国产伦理精品不卡| 中文字幕在线观看网址| 中文在线免费一区三区高中清不卡| 波兰性xxxxx极品hd| 一级女性全黄久久生活片免费| 亚欧洲精品在线视频| 在线观看成人小视频| 国产男男gay体育生白袜| 亚洲福利视频二区| 成人av电影观看| 欧美丰满少妇xxxxx做受| av综合电影网站| 91免费综合在线| 国产亚洲精品美女久久久久久久久久| 一区二区三区四区欧美日韩| 亚洲大片在线| 在线看的黄色网址| av在线综合网| 日本在线一级片| 日本精品一级二级| 性一交一乱一乱一视频| 国产亚洲精品久久久久动| 成人无遮挡免费网站视频在线观看| 91黑丝高跟在线| 国产一区2区在线观看| 欧美日本韩国一区二区三区| 久久久久久久久久久久久久| 国产xxxxx在线观看| 国产精品中文欧美| 欧美日韩国产黄色| 午夜日韩在线电影| 国产农村妇女毛片精品久久| 亚洲美女在线观看| 国产蜜臀在线| 成人免费xxxxx在线观看| 小说区图片区色综合区| 超碰97在线看| 美女视频免费一区| 女同毛片一区二区三区| 夜夜爽夜夜爽精品视频| 国产日韩在线免费观看| 精品偷拍各种wc美女嘘嘘| 性xxxfreexxxx性欧美| 国产噜噜噜噜噜久久久久久久久| 欧美jizz19性欧美| www.成年人视频| 国产真实乱对白精彩久久| 日本污视频网站| 色94色欧美sute亚洲线路二| 性感美女一级片| 午夜精品福利视频| 国产图片一区| 国产xxxx振车| 粉嫩在线一区二区三区视频| 国产97免费视频| 91精品国产欧美一区二区18| 婷婷在线视频观看| 国产精品亚洲美女av网站| 精品香蕉视频| 看欧美ab黄色大片视频免费| 91在线精品一区二区三区| 国产精品成人网站| 精品国产乱码91久久久久久网站| av在线影院| 99久久无色码| 国产精品jizz在线观看美国| 免费看的av网站| 夜夜揉揉日日人人青青一国产精品| 国产三级三级在线观看| 美女性感视频久久久| www 久久久| 久久久久久久久影视| 国产精品99久久久久久宅男| 欧美大片xxxx| 欧美大片免费久久精品三p| 国内小视频在线看| 国产亚洲一区在线播放| 亚洲一区二区三区高清| 自拍偷拍亚洲天堂| 欧美性受极品xxxx喷水| 永久av在线| 91精品黄色| 在线成人黄色| 波多野结衣福利| 欧美系列一区二区| av网站网址在线观看| 国产精品theporn88| 国产精品一卡| 国产精品情侣呻吟对白视频| 欧美裸体一区二区三区| 女同视频在线观看| 久久精品magnetxturnbtih| 首页欧美精品中文字幕| 婷婷国产成人精品视频| 日韩一区二区电影| 成人一级福利| 亚洲高清精品中出| 国产乱淫av一区二区三区| 精品无码人妻一区二区三区品 | 国产98在线|日韩| 99香蕉国产精品偷在线观看| 性猛交娇小69hd| 制服丝袜日韩国产| 波多一区二区| 亚洲福利av在线| 成人激情综合网站| 成人小视频在线播放| 欧美精品制服第一页| 亚洲女娇小黑人粗硬| 国产美女视频免费看| 亚洲成人av电影在线| 91在线播放网站| 国产一区二区三区四区五区在线 | 精品久久一区二区三区| 澳门成人av网| 欧美日韩dvd| 久久精品日产第一区二区三区高清版 | 国产精品xnxxcom| 成人国产在线看| 久久综合久久综合久久综合| 国产毛片毛片毛片毛片毛片| 青青久久av北条麻妃黑人| 亚洲a一区二区三区|