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

七張圖理解 Dockerfiles vs Buildpacks,二者如何選擇?

云計算 云原生
與腳本化 Dockerfile 相比,聲明式云原生 buildpack 支持一些新場景。

與腳本化 Dockerfile 相比,聲明式云原生 buildpack 支持一些新場景。

容器無處不在

容器在大多數軟件交付管道中無處不在,有時不是直接可見的,但它們存在于幕后。無論我們是在 Kubernetes、普通 Docker 主機、serverless functions 還是許多其他編排平臺上運行軟件,容器都代表了不可變的可運行軟件工件。

將應用程序源代碼轉換為正在運行的應用程序需要一個中間容器構建階段,而將軟件轉換為容器的一種非常流行的方法是通過 Dockerfile。

圖片

Dockerfiles

從 Dockerfile 構建容器是一種腳本化方法,Dockerfile 中的大部分 內容基本上是構建軟件、安裝依賴項等所需的命令。這也意味著學習如何使用 Dockerfile 的學習曲線很淺,并且現有構建腳本可以毫不費力地將其移植到 Dockerfile 中。

然而,事實證明,制作高質量的容器鏡像并非易事。互聯網上充滿了制作小型、安全、最佳實踐鏡像的指南。通常圍繞:

  • 確保正確處理信號,例如SIGTERM是容器合約的一部分。
  • 不要使用 root 用戶運行應用程序。
  • 不要在容器中包含不必要的工具、機密或構建工件。
  • 按照優化緩存的順序添加層,例如首先更改最少的層。
  • 正確標記和簽署鏡像。

下面說明了一個 Dockerfile,它為 NodeJS 應用程序實現了其中的一些建議;使用兩階段構建生成一個小鏡像,以非 root 身份運行,并仔細排序操作以改進緩存:

FROM node:16.13.1-alpine3.14 AS builder
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm ci
COPY tsconfig.json .
COPY src src
RUN npm run build
RUN npm prune production
FROM node:16.13.1-alpine3.14
WORKDIR /usr/src/app
USER node
ENV NODE_ENV production
COPY from=builder /usr/src/app/node_modules/ ./node_modules
COPY from=builder /usr/src/app/dist/ ./dist
EXPOSE 8000
CMD [ "node", "/usr/src/app/dist/main.js" ]

編寫高質量的 Dockerfile 需要相當多的努力,有時 Dockerfile 通常只是其他項目的 Dockerfile 的副本。這會導致 Dockerfile 碎片化,對于擁有多個容器的組織來說,這很快就會變得難以管理。

Buildpacks

Buildpacks 源于這樣一種想法,即對于給定類型的大多數應用程序,將應用程序源代碼轉換為容器或多或少是相同的。這意味著我們可以為這個過程設計可重用的程序。這個概念自 Heroku 發起并被 Cloud Foundry、Google App engine、Gitlab、CircleCI 等采用以來,已經發展超過 10 年。

社區努力確保它們提供高質量的容器鏡像構建,而不是為每個應用程序使用碎片化 Dockerfiles,并具有不同級別的安全和最佳實踐。

構建容器鏡像的聲明式方法

使用 buildpacks 時,我們需要了解 buildpacks 如何構建容器。與其編寫腳本如何使用 Dockerfiles 構建容器,不如聲明我們期望在容器中打包的內容,并讓 buildpacks 找出細節。

Buildpacks 實現了許多階段,其中兩個是:

  • Detect:每個 buildpack 檢測它是否可以參與容器構建。例如,對于 NodeJS 應用程序,_npm_ buildpack 可能會查找package.json文件。如果找到,buildpack 將通知構建器它可以參與構建并貢獻依賴項。Python buildpack 會查找requirements.txt文件,但是,不會在 NodeJS 應用程序中找到它,因此不會參與構建。
  • Build:在這個階段,所有表明它們可以參與構建的 Buildpacks 都將被執行以實現構建。如上所述,重要的是我們知道 Buildpacks 如何檢測應該構建的內容。即 NodeJS 應用程序的開發人員應確保項目包含一個 package.json 文件。此外,如果我們期望某個版本的 Node 運行時或其他依賴項,則應在 package.json 文件中明確說明,例如:
{
"engines": {
"node": "16.13.1",
"npm": "8.1.2"
},
"dependencies": {
"express": "4.17.2"
}
...
}

容器鏡像攜帶多種形式的元數據,Buildpacks 通常使用環境變量來聲明元數據設置。以下是使用環境變量設置標準org.opencontainers.description標簽的示例,該標簽使用Paketo image-labels buildpack在容器鏡像上。環境變量的配置是通過 project.toml 文件完成的,這是聲明構建配置的常用格式:

[[build.env]]
name = "BP_OCI_DESCRIPTION"
value = "Sample NodeJS from https://github.com/MichaelVL/buildpacks"

了解 Buildpacks 的這種聲明性 API 對開發人員來說是必不可少的。開發人員不應該關心 Dockerfile,他們應該知道 buildpacks 的聲明式 API。

可復制的構建、交付鏈安全

Buildpacks 努力實現可重現的構建。構建過程是完全確定的,并且在使用相同的輸入執行時會產生相同的輸出。這使我們能夠準確地驗證將哪個應用程序二進制文件或源打包到容器中,并且可以保護軟件交付鏈免受惡意應用程序被打包到容器中。

當使用 Dockerfiles 構建鏡像時,容器鏡像(及其哈希值 sha256 摘要)在每次重建鏡像時都會發生變化,即使提供完全相同的輸入也是如此。

可重現的構建是軟件工件供應鏈級別第 4 級的要求,而 Buildpacks 是提高容器鏡像供應鏈安全性的重要工具。

可重現的構建也是一種避免不必要的容器層重建的有效機制。

改進的重建速度和緩存

Dockerfile 中的每一行基本上都會為最終的容器鏡像貢獻一層。除非先前的圖層發生更改,否則圖層會被緩存并重用。當前面的層更改時,所有后續層都將重新構建和更改,因為 Docker 不應用可重現的構建。

使用 buildpacks,每個 buildpack 都會為容器鏡像貢獻一個層。如果 buildpack 的輸入沒有改變,則 buildpack 層不會改變,無論前面的層是否改變。此外,使用 buildpack 可以替換每個層,而不會影響其他 buildpack 生成的層。

如果需要更新容器基礎鏡像(例如由于安全問題),我們可以在容器鏡像中重新設置該層,而無需重建任何其他應用程序層。這將很難使用基于 Dockerfile 的工作流來實現。

圖片

單層 rebase 不僅是容器鏡像構建時間的顯著改進,而且對于容器的部署也是如此。想象一下有 10 個服務使用某個基礎鏡像。如果安全問題導致我們更新此基礎鏡像,則基于 Dockerfile 的構建將導致重建所有鏡像的所有層。這會消耗構建時間并下載完整的 10 個新鏡像。使用 buildpack rebase 方法,我們只需要檢索一個新的共享基礎鏡像。

容器已經 42 歲了?

如果使用 buildpacks 構建容器,您將遇到意想不到的時間戳:

$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
sample-app latest 4713a8f7d9bb 42 years ago 202MB

這是可重現構建的副作用。為了實現可重現的構建,時間被凍結在一個固定點,以避免任何與時間相關的數據導致容器鏡像差異。Buildpacks 構建具有1980 年 00:00:01 的時間戳來源的鏡像,這是為了與舊文件格式的兼容而選擇的。

使用 Buildpack 時的角色

當使用 buildpacks 構建容器時,有兩個角色:

  • 應用程序開發人員:開發人員的重點應該是以應用程序為中心,他們與容器構建相關的主要職責是提供應用程序源、依賴版本(例如 NodeJS 應用程序的package.json)和應用程序名稱和版本等元數據。對于構建容器,他們將完全控制權委托給組織策劃的構建器/Buildpacks。要將大多數問題委托給平臺運營商,開發人員應該使用最新構建器/Buildpacks,而不是修復構建器版本。
  • 構建平臺運營商:構建平臺運營商的職責是為開發人員提供一個精選的構建器和一組 Buildpacks,以申請構建容器。這主要包括利用像Paketo buildpacks這樣的社區構建器,但運營商可以選擇添加額外的,可能是自行設計的 buildpacks 用于公司特定目的。這可以是例如添加與公司相關的元數據。構建平臺運營商的主要關注點還在于:容器運行鏡像(容器基礎鏡像)的更新和安全性。

這種關注點分離對于維護多個容器鏡像的組織非常有價值,因為這允許平臺構建操作員控制容器鏡像。例如,如果在運行鏡像中發現安全問題,則可以通過更改構建器運行鏡像,使用新的運行鏡像重建所有容器。如上所述,這將是一個非常有效的層變基。使用 Dockerfile,這將需要更新所有應用程序 Dockerfile 中的基礎鏡像,并會觸發所有容器鏡像層的重建。

圖片

容器里有什么軟件材料清單

buildpacks 增強 Dockerfile 構建過程的一個示例是如何將構建相關的元數據附加到容器鏡像。軟件項目包含許多依賴項,并且有關這些依賴項的信息在鏡像構建期間嵌入到容器鏡像中。

軟件物料清單 (SBOM) 是進入容器鏡像的組件的結構化列表。這可用于通過將 SBOM 與已知安全問題進行比較,來確保僅使用安全軟件。SBOM 還可用于驗證哪個軟件許可證管理軟件等。CycloneDX和SPDX是結構化 SBOM 數據的兩個通用標準。

下面是來自 NodeJS 項目的 SBOM 的摘錄,我們可以從 SBOM 中看到所使用的 Node 引擎的確切版本,以及提供它的 buildpack:

{
{
"name": "Node Engine",
"metadata": {
"source": {
"checksum": {
"hash": "34b23965457fb0587cda6fa898e5d030211f5f374cb6"
},
"uri": "https://nodejs.org/.../node-v16.13.1.tar.gz"
},
"version": "16.13.1"
},
"buildpacks": {
"id": "paketo-buildpacks/node-engine",
"version": "0.11.2"
}
}
}

使用 SBOM 來保護軟件是對使用容器鏡像掃描儀的有力補充。由于 SBOM 是由 buildpacks 創建的,因此它將精確且清楚地識別交付鏈。容器鏡像掃描儀將不得不從容器的實際內容中扣除這個版本,這將不太精確。

如何使用 Buildpacks?

使用云原生 Buildpacks,構建過程和 Buildpacks 包含在兩個容器鏡像中:一個構建器鏡像和一個運行鏡像。在某種程度上,它可以被看作是一個改進的 Dockerfile 兩階段構建。下圖說明了兩階段 Dockerfile 構建如何映射到 Buildpacks。請注意 NodeJS 應用程序的構建邏輯如何映射到buildpack(通常這種應用程序構建將分布在多個 buildpack 中)

圖片

構建器鏡像包含一組有序的 Buildpacks 構建事物的邏輯、一個生命周期組件 Buildpacks 的編排器和對運行鏡像的引用。Dockerfile 與生命周期組件沒有并行性,因為 Dockerfile 是線性處理的。在檢測階段,Buildpacks 將選擇加入或退出構建,生命周期組件對此進行管理。

最后,需要一個工具來觸發生命周期組件:非常類似于 docker build 命令。為此,存在許多工具,其中最廣為人知的是 pack 和 Tekton,然而,像 CircleCI 和 Gitlab 這樣的商業持續集成供應商也支持使用 buildpacks 進行構建。

圖片

可以在此處找到使用pack 的 Github actions 工作流示例。

結論

雖然經驗豐富的 Dockerfile 作者在從 Dockerfiles 遷移到 buildpacks 時可能會感到失去了對細節的控制,但上面概述的優勢有望意味著使用 buildpacks 時會以開放的心態來對待。我相信大多數開發人員都會喜歡 buildpacks。構建容器和維護 Dockerfile 從來不是他們的主要關注點,而是部署應用程序所需的必要步驟。構建平臺操作員、SRE 和安全團隊應該喜歡 buildpacks,因為它恢復了對容器鏡像和容器鏡像中內置工件的控制。

用云原生 buildpack 替換 Dockerfile 會改變我們構建容器鏡像的方式:

圖片

對于開發人員和組織而言,重點關注聲明性部分很重要。學習如何聲明容器應該如何構建以及正在構建什么將是最重要的。

buildpacks 完美嗎?

不完全是。在寫這篇文章時,我嘗試復制一開始提出的兩階段 Dockerfile 的精益容器構建,但是,這并不完全可行(使用 Paketo 構建器)生成的容器的大小要大一些。但是,我預計 buildpacks 會在未來改進。

還有一些應用程序很難用 buildpacks 打包到容器中。例如,如果沒有自定義 Buildpacks,打包在容器(VM 風格的容器)中的遺留單體應用程序將難以實現。此類應用程序不能很好地與 buildpacks 配合使用,并且可能需要對 Dockerfile 進行低級控制,這些應用程序可能是容器打包應該注意的問題。

責任編輯:趙寧寧 來源: 進擊云原生
相關推薦

2020-11-25 14:40:48

機器學習人工智能微分方程

2025-10-27 01:22:00

MCPAPI網關

2015-07-13 10:23:23

Java圖解

2022-08-25 11:38:38

GolangDockerfile

2022-05-09 11:15:05

RocketMQPULL 模式PUSH 模式

2021-04-21 12:05:45

分析數據運營

2022-07-29 16:28:19

Kubernetes通信服務通信

2021-11-29 07:47:56

RocketMQ分布式消息

2025-05-08 07:38:36

模型上下文協議MCPAI模型

2021-05-27 11:30:54

SynchronizeJava代碼

2022-02-28 11:10:42

ZGCG1收集器

2024-08-30 08:51:17

MavenGradleJava

2021-08-11 22:05:26

加密貨幣比特幣數字貨幣

2024-08-01 20:08:17

2017-03-03 15:04:19

2023-04-11 08:35:22

RocketMQ云原生

2022-06-13 11:05:35

RocketMQ消費者線程

2022-06-11 18:15:26

KubernetesDockerLinux

2012-08-15 09:47:05

服務器虛擬化

2009-02-21 16:21:16

點贊
收藏

51CTO技術棧公眾號

成人在线观看www| 成人精品视频在线| 醉酒壮男gay强迫野外xx| 日韩新的三级电影| 中文字幕一区二区三区色视频| 91九色视频导航| 日韩欧美大片在线观看| 久久不卡国产精品一区二区| 91麻豆精品国产91久久久资源速度 | 中文字幕永久在线视频| 亚洲在线久久| 亚洲人成亚洲人成在线观看| 五月天婷婷在线观看视频| av白虎一区| 亚洲国产精品二十页| 成人在线观看91| 亚洲熟妇无码久久精品| 亚洲乱码视频| 欧美成人久久久| 色一情一交一乱一区二区三区| 亚洲免费一区三区| 在线观看日韩高清av| 日本福利视频一区| 好操啊在线观看免费视频| 久久久99久久| 狠狠色综合欧美激情| 国产又粗又猛又色又| 母乳一区在线观看| 久久久在线观看| 亚洲一级生活片| 成人精品中文字幕| 亚洲色图综合久久| 日本一区二区在线免费观看| 欧美三级一区| 欧美日韩精品一区二区天天拍小说 | 特级毛片在线| 最新高清无码专区| 亚洲激情啪啪| 99免在线观看免费视频高清| 成人91在线观看| 成人av蜜桃| 国产精品久久久久久久一区二区 | 久久6免费视频| yiren22亚洲综合| 在线视频国内自拍亚洲视频| 37pao成人国产永久免费视频| 国产亚av手机在线观看| 97久久夜色精品国产九色| 国产一二三四视频| 欧美军人男男激情gay| 国产丝袜一区视频在线观看| 久久久久国产精品无码免费看| 欧美黄视频在线观看| 91精品国产黑色紧身裤美女| 九九热免费精品视频| 日本综合视频| 欧美日韩免费不卡视频一区二区三区 | 3d动漫精品啪啪一区二区三区免费| 国产一级精品毛片| 免费在线看一区| 国产欧美精品日韩精品| 一区二区自拍偷拍| 九九久久精品视频| 91美女片黄在线观看游戏| 国产熟女一区二区三区五月婷| 久久成人18免费观看| 国产区精品视频| 国产欧美久久久| 国产成人免费视频精品含羞草妖精 | 欧美www在线| 黄色一级视频免费| 亚洲精选在线| 日本午夜精品理论片a级appf发布| 无码人妻精品一区二区| 美女在线视频一区| 91麻豆桃色免费看| 亚洲av成人精品日韩在线播放| 久久综合色一综合色88| 特级西西444www大精品视频| 福利在线视频网站| 亚洲第一激情av| 国产日韩一区二区在线观看| 免费一级欧美在线观看视频| 日韩一区二区三区电影 | 国产男人搡女人免费视频| 麻豆中文一区二区| 草莓视频一区| 理论在线观看| 日韩美女精品在线| 免费看黄在线看| 巨胸喷奶水www久久久免费动漫| 91麻豆精品久久久久蜜臀| 亚洲麻豆一区二区三区| 精品国产一区探花在线观看| 精品中文字幕在线观看| 青青国产在线观看| 狠狠色丁香久久婷婷综| 豆国产97在线| 在线观看免费版| 亚洲国产精品精华液网站| 手机看片福利日韩| 99精品在免费线中文字幕网站一区| 亚洲欧美日韩国产精品| 午夜精品一区二区三级视频| 国产精品外国| 亚洲伊人久久综合| 国产在线日本| 亚洲国产一二三| 午夜精品中文字幕| 日韩欧美影院| 欧美国产高跟鞋裸体秀xxxhd| 激情网站在线观看| 成人国产在线观看| 国产系列第一页| 日韩免费va| 亚洲国产精品美女| 国产67194| 日本人妖一区二区| 精品国产中文字幕| 丝袜在线视频| 91精品国产全国免费观看 | 亚洲女人****多毛耸耸8| 精品久久久久久久免费人妻| 爱高潮www亚洲精品| 久久视频精品在线| 69av视频在线观看| 久久综合久久综合久久| 欧美人成在线观看| 欧美午夜网站| 久久国产精品视频| 国产精品久久久久久久成人午夜 | 亚洲综合网在线| 免费一级片91| 日韩欧美一区二区视频在线播放| 激情国产在线| 亚洲黄色www| 国产亚洲精品成人| 国产福利一区二区三区视频 | 菠萝蜜视频国产在线播放| 欧美日韩成人综合在线一区二区| 亚洲精品成人无码熟妇在线| 亚洲激情视频| 精品在线观看一区二区| 成入视频在线观看| 亚洲国产日韩精品在线| 国产精品第二十页| 成人一区二区三区| 成人性生活视频免费看| 国产福利资源一区| 久久久久久成人精品| 色欲久久久天天天综合网 | 国产精品一区无码| 久久久久久综合| 日韩一级免费在线观看| 红桃成人av在线播放| 国产精品白嫩初高中害羞小美女| 粉嫩一区二区三区国产精品| 日本福利一区二区| 国产精品无码无卡无需播放器| 蓝色福利精品导航| 成年人黄色在线观看| 日本一区二区三区电影免费观看| 欧美wwwxxxx| 天天干天天操av| 色婷婷综合久久久中文字幕| x88av在线| 精品一区二区免费| 成年人视频网站免费| 黄色免费大全亚洲| 日韩av色在线| 男人的天堂在线视频免费观看| 91精品婷婷国产综合久久性色 | 欧美老熟妇乱大交xxxxx| 日韩电影网1区2区| 免费观看黄色大片| 成人香蕉社区| 国产精品成人一区| av香蕉成人| 亚洲精品电影网| japanese国产在线观看| 亚洲欧美精品午睡沙发| 极品白嫩的小少妇| 日韩精品国产精品| 一二三在线视频| 亚洲精品456| 成人在线一区二区| 免费h在线看| 日韩中文理论片| 天天色综合久久| 欧美群妇大交群的观看方式| 国语对白一区二区| 久久精品免费在线观看| 日本成人在线免费观看| 国产视频一区欧美| 男插女免费视频| 美女网站一区| 91九色视频在线观看| 精品国产第一福利网站| 久久成人这里只有精品| 欧美理论在线观看| 亚洲成**性毛茸茸| 国产精品国产三级国产aⅴ| 懂色av一区二区三区| 色欲人妻综合网| 久久精品人人做人人爽97| 初高中福利视频网站| 久久久水蜜桃av免费网站| 在线观看av的网址| 日韩av大片| 黑人另类av| 精品国产不卡一区二区| 欧美一区二区色| 黄页网站大全在线免费观看| 深夜福利国产精品| 毛片在线播放网址| 精品国产乱码久久久久久图片| 欧美 亚洲 另类 激情 另类 | 97超碰中文字幕| 色综合久久99| 亚洲日本韩国在线| 亚洲国产精品影院| 久久av高潮av无码av喷吹| 中文字幕亚洲欧美在线不卡| 免费观看a级片| 99精品国产视频| 在线观看亚洲免费视频| 国产一区二区免费视频| 日韩一区二区三区久久| 久久视频一区| 人妻精品无码一区二区三区 | 一区二区成人在线观看| 中文字幕观看av| 欧美激情在线免费观看| 好吊视频在线观看| 久久免费偷拍视频| 97香蕉碰碰人妻国产欧美| 国产aⅴ精品一区二区三区色成熟| 特黄视频免费观看| 麻豆91在线播放免费| 成人黄色一区二区| 天堂va蜜桃一区二区三区| 波多野结衣乳巨码无在线| 狠狠综合久久| 国产精品久久久久9999爆乳| 欧美日韩一区自拍| 黄色一级片黄色| 激情文学一区| 香港三级韩国三级日本三级| 亚洲一区激情| 国产精品欧美激情在线观看| 丝袜美腿亚洲一区二区图片| 亚洲中文字幕久久精品无码喷水| 久久一本综合频道| 亚洲黄色av网址| 精品影视av免费| 欧美国产日韩在线视频| 国产jizzjizz一区二区| 日本性生活一级片| 久久久久亚洲蜜桃| 欧美88888| 亚洲精品中文字幕在线观看| 欧美色图亚洲天堂| 亚洲国产一区二区三区青草影视| 欧美在线观看不卡| 日本乱码高清不卡字幕| 在线免费一级片| 日韩亚洲欧美成人一区| 天天干天天操av| 亚洲天堂网站在线观看视频| bbbbbbbbbbb在线视频| 视频在线观看99| 69xxx在线| 91成人在线视频| 成人黄色图片网站| 97超碰在线播放| 精品中文字幕一区二区三区av| 亚洲一区二区三区精品动漫| 综合久久亚洲| 国产在线观看福利| 精品亚洲欧美一区| 制服丝袜第一页在线观看| 国产日韩欧美电影| 国产va在线播放| 色综合久久88色综合天天免费| 在线观看一二三区| 精品蜜桃在线看| 一区二区三区视频在线观看视频| 欧美黑人国产人伦爽爽爽| 国产精选在线| 91精品免费看| 亚洲尤物av| 蜜桃视频成人在线观看| 久久综合网络一区二区| 超碰人人cao| 国产无人区一区二区三区| 欧美精品入口蜜桃| 91国偷自产一区二区三区成为亚洲经典 | 国产91在线精品| 国产伦精品一区二区三区四区视频| 欧美在线电影| 一女被多男玩喷潮视频| 国产一区二区伦理片| 久久久久久久久久久久| 曰韩精品一区二区| 中文字幕第99页| 国产视频在线一区二区| 日本精品600av| 国产日韩欧美综合| 综合伊思人在钱三区| av片在线免费| 国产精品自拍一区| 精品国产国产综合精品| 色狠狠av一区二区三区| 人妻精品一区一区三区蜜桃91| 久久精品国产欧美激情| 亚洲精品在线影院| 精品一区二区不卡| 国内在线观看一区二区三区| 在线免费看污网站| 欧美国产综合一区二区| 日韩久久精品视频| 337p日本欧洲亚洲大胆色噜噜| 国产精品剧情| 国产欧美一区二区三区久久| 国产成人三级| 成年人视频网站免费观看| 成人国产亚洲欧美成人综合网| 久久福利免费视频| 欧美日韩你懂的| 日本中文字幕在线观看| 国产精品国产三级国产aⅴ浪潮| 丝袜av一区| 免费在线观看毛片网站| 91视频一区二区三区| 色播视频在线播放| 亚洲第一在线视频| 不卡专区在线| 好吊色欧美一区二区三区| 韩日成人av| 亚洲av成人精品一区二区三区| 亚洲午夜一区二区| 亚洲精品一区二区三区四区| 欧美激情视频网| 中文字幕久久精品一区二区| 日韩免费在线观看av| 大陆成人av片| 日操夜操天天操| 亚洲国产成人久久综合| 九色porny自拍视频在线观看| 国内精品久久国产| 午夜在线一区| 一区二区三区在线观看免费视频| 欧洲另类一二三四区| 黄色片在线播放| 国产精品免费久久久久久| 久久密一区二区三区| 亚洲最大天堂网| 亚洲综合色自拍一区| 日韩中文字幕观看| 欧美性在线视频| 欧美日韩激情| 伊人成人免费视频| 亚洲已满18点击进入久久| 午夜视频在线播放| 国产精品成人av在线| 国产精品成人一区二区不卡| 色婷婷一区二区三区在线观看| 亚洲一区二区三区影院| 污污网站免费在线观看| 国产精品免费视频久久久| 亚洲一区二区三区无吗| 亚洲一二三四五| 欧美性jizz18性欧美| 一级毛片视频在线| 操一操视频一区| 美女国产一区| 免费成人深夜夜行网站| 日韩av影片在线观看| 国产第一精品| 欧美黑人在线观看| 久久一留热品黄| 一区二区三区午夜| 欧美极品美女电影一区| 久久av电影| 黑人巨大猛交丰满少妇| 欧美日韩亚洲高清| 国产淫片在线观看| 久久精品国产精品青草色艺 | 成人午夜在线影视| 精选一区二区三区四区五区| 久久99蜜桃精品| 天天操天天干视频| 久久激情视频久久| 性欧美lx╳lx╳| 日本一本在线视频| 在线亚洲欧美专区二区| 日韩123区| 亚洲国产精品一区二区第四页av| jvid福利写真一区二区三区| 亚洲一区精品在线观看|