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

国产精品美女一区二区三区 | 天天看片天天操| 一区二区三区视频网站 | 五月天激情小说| 日韩精品免费观看视频| 亚洲色图视频免费播放| 久久久久久高清| 一本色道久久综合精品婷婷| 亚洲国产日韩在线| 亚洲人成网站999久久久综合| 亚洲午夜激情影院| 国产ktv在线视频| 日韩毛片精品高清免费| 国模精品一区二区三区| 国产精品久久久久久无人区| 欧美一级网站| 欧美交受高潮1| 可以免费看av的网址| 你懂的在线观看一区二区| 欧美色图片你懂的| 欧美 日本 亚洲| 国产精品实拍| 国产精品欧美一区喷水| 国产一区二区在线网站| 国产视频一区二区三| 丝袜美腿成人在线| 97精品国产97久久久久久免费 | av不卡中文字幕| 欧美成人福利| 欧美亚洲一区二区三区四区| 可以在线看的av网站| caoporm免费视频在线| 国产精品女上位| 日韩精品一区二区三区丰满| 天堂在线视频免费观看| 高清视频一区二区| 亚洲在线视频福利| 国产又大又粗又长| 九九九久久久精品| 国产精品老牛影院在线观看| jizz国产在线观看| 久久人人超碰| 日韩免费精品视频| 午夜婷婷在线观看| 午夜在线精品| 日本一区二区不卡| www.毛片.com| 视频一区在线播放| 欧美在线性爱视频 | 最新日韩免费视频| 久久中文视频| 日韩中文av在线| 欧美美女性生活视频| 色999日韩| 中文字幕精品一区久久久久| www.日本高清视频| 99久久婷婷这里只有精品| 在线国产精品播放| 日本污视频网站| 97视频精品| 欧美成人午夜剧场免费观看| 欧美日韩国产精品一区二区三区| 欧美成人日韩| 91黑丝高跟在线| 69成人免费视频| 亚洲午夜久久久久久久久久久| 亚洲香蕉成人av网站在线观看| 中文字幕丰满乱子伦无码专区| 日韩激情网站| 亚洲欧洲免费视频| 最新日韩免费视频| 久久久久亚洲AV| 色婷婷色综合| www.亚洲天堂| 最近更新的2019中文字幕| 亚洲中文字幕无码av永久| 国产精品一区二区日韩| 日韩欧美在线观看| 尤物国产在线观看| 2020最新国产精品| 亚洲美女喷白浆| www成人啪啪18软件| 久久久久久久久国产一区| 色中色综合影院手机版在线观看| 日韩污视频在线观看| 日产欧产美韩系列久久99| 成人黄在线观看| 天天操天天干天天爽| 国产色产综合产在线视频| 国产一线二线在线观看| 国产成人亚洲综合a∨婷婷图片 | 97久久网站| 欧美一区二区三区四区在线观看| 性欧美18—19sex性高清| 国产一区二区三区四区二区| 久久久精品一区二区三区| 国产精品6666| 九一久久久久久| 乱色588欧美| av文字幕在线观看| 色狠狠色狠狠综合| 少妇献身老头系列| 国产麻豆日韩| 中文视频一区视频二区视频三区| 国产欧美小视频| 欧美日韩国产亚洲一区| 国产成人免费91av在线| 精品欧美一区二区精品少妇| 久久精品亚洲精品国产欧美kt∨| 青青视频免费在线| 国产成人精选| 亚洲欧美国内爽妇网| 欧美精品色哟哟| 久久国产精品无码网站| 免费精品视频一区二区三区| 在线免费观看污| 欧美日韩国产精选| 蜜臀久久99精品久久久久久| 91久久夜色精品国产九色| 91久热免费在线视频| 国产视频福利在线| 色综合网色综合| 久久久午夜精品福利内容| 午夜精品影院| 91在线免费视频| 午夜免费视频在线国产| 色综合久久中文字幕| 精品人妻一区二区三区日产| 国产一区激情| 不卡一卡2卡3卡4卡精品在| 午夜在线免费观看视频| 欧美午夜一区二区| 欧美一级生活片| 一级肉体全黄裸片| 国产高潮在线| 日本网站在线观看一区二区三区| 国产精品久久久久久久小唯西川| 黄色网在线播放| 欧美日韩在线不卡| 日韩视频在线观看免费视频| 久久亚洲一区| 青青草国产精品| 欧美艳星kaydenkross| 亚洲摸下面视频| 国产91国语对白在线| 久久美女艺术照精彩视频福利播放| 欧美变态另类刺激| 免费短视频成人日韩| 日韩美女在线观看一区| 理论视频在线| 欧美三级日本三级少妇99| 日本女人性生活视频| 精品一区中文字幕| 女人色极品影院| 欧美午夜寂寞| 国产精品扒开腿做爽爽爽男男| 青青草在线免费视频| 91福利小视频| 成年人免费视频播放| 精品一区免费av| 免费高清一区二区三区| 另类图片第一页| 国产va免费精品高清在线| av资源种子在线观看| 欧美另类变人与禽xxxxx| 国产盗摄x88av| 不卡一区二区三区四区| 精品中文字幕av| 精品久久久久中文字幕小说| 成人免费在线视频网址| 青青青草视频在线| 日韩精品高清在线观看| 国产三级理论片| 亚洲精品国产成人久久av盗摄 | 国产福利精品一区| 视频二区一区| 欧美精品aaaa| 国产一区二区三区国产精品| 在线观看亚洲区| 国产人妻精品一区二区三区| 亚洲一区二区三区在线| 中文字幕日韩三级片| 亚洲精品影视| 色一情一乱一伦一区二区三欧美| 成人国产一区| 久久777国产线看观看精品| 99久久精品无免国产免费| 图片区小说区国产精品视频| 91九色蝌蚪porny| 日韩精品久久久久久| 午夜啪啪福利视频| 五月天亚洲色图| 欧美一级片在线播放| 国产一二区在线观看| 亚洲精品国产精品乱码不99按摩| 中文字幕在线播放av| 亚洲成精国产精品女| 天天摸日日摸狠狠添| 成人激情免费网站| 久久国产激情视频| 国产精品日本欧美一区二区三区| 亚洲一区三区电影在线观看| 欧美电影完整版在线观看| 国产欧美一区二区| 极品美女一区| 欧美极品少妇xxxxⅹ喷水| 一区二区三区视频在线观看视频| 亚洲精品99久久久久中文字幕| 91黄色在线视频| 欧美性xxxxhd| 国产精品19乱码一区二区三区| 国产精品色呦呦| 野花社区视频在线观看| 国产成人久久精品77777最新版本| 成年人小视频网站| 亚洲久久在线| 国产一级大片免费看| 成人毛片免费看| 国产自产在线视频一区| 99久久人爽人人添人人澡 | 欧美日韩精品中文字幕一区二区| 欧美成人一级| 91在线观看免费高清| 国产精品黄色片| 日韩免费av一区二区| 三妻四妾的电影电视剧在线观看| 欧美成人精品在线| 毛片av在线| 俺去亚洲欧洲欧美日韩| 国产在线观看高清视频| 日韩高清av在线| 天天操天天操天天操| 亚洲精品在线免费播放| 精品国产av一区二区| 欧美一区二区三区日韩视频| 亚洲专区第一页| 欧美日韩精品高清| 在线视频你懂得| 欧美日韩另类国产亚洲欧美一级| 国产在线观看黄色| 色综合天天综合网天天看片| 偷偷操不一样的久久| 福利视频一区二区| 亚洲永久精品在线观看| 黑人巨大精品欧美一区免费视频| 日韩av电影网址| 精品国产91久久久久久| 欧美日韩综合在线观看| 精品久久久久久久久国产字幕| 国产一级av毛片| 亚洲成a人v欧美综合天堂下载| 国产精品不卡av| 黄网动漫久久久| 中文字幕精品视频在线观看| 色av综合在线| 中文字幕视频免费观看| 欧美精品一卡两卡| 国产suv一区二区| 精品国产制服丝袜高跟| 熟妇人妻中文av无码| 亚洲欧美日韩国产中文| 川上优的av在线一区二区| 久久激情视频免费观看| 日韩伦理电影网站| 欧美日韩在线影院| 天天操天天干视频| 日本高清不卡在线观看| 日韩免费av网站| 国产清纯在线一区二区www| 一区二区三区免费在线观看视频| 国产日韩欧美综合在线| 亚洲精品卡一卡二| 无吗不卡中文字幕| 久久久久在线视频| 国产精品美女久久久久| 欧美成人激情在线| a毛片不卡免费看片| 人人爽久久涩噜噜噜网站| 在线一区视频观看| 亚洲va码欧洲m码| 大伊香蕉精品在线品播放| 欧美tk—视频vk| 欧美xxx.com| 亚洲欧美中文日韩在线| 青青青国产在线 | 九九九久久国产免费| 国产探花在线观看| 国产精品成人va在线观看| 国产精品成人3p一区二区三区| 国产在线欧美日韩| 久久中文视频| www.中文字幕在线| 蜜桃av噜噜一区| 激情成人开心网| 日韩精品亚洲专区| 中文字幕永久免费| 成人性生交大片| 国产在线免费看| 欧美日韩国产影院| 国产精品美女一区| 亚洲美女av黄| 四虎影视国产在线视频| 国产精品久久久久免费a∨大胸| 99香蕉久久| 综合操久久久| 日韩高清在线一区| 国产老熟女伦老熟妇露脸| 亚洲欧美激情在线| 国产99免费视频| 日韩成人av网址| 亚洲第一图区| 国产日韩亚洲欧美| 欧美日韩在线网站| 能在线观看的av| 成人av电影免费在线播放| 精品自拍偷拍视频| 欧美日韩国产美| av大全在线免费看| 全亚洲最色的网站在线观看| 国产伦精品一区二区三区在线播放 | 中文字幕亚洲区| 国产午夜麻豆影院在线观看| 亚洲第一网中文字幕| 在线播放免费av| 91嫩草在线视频| 99精品美女| 日韩一区二区三区不卡视频| 久久久午夜精品| 欧美三级午夜理伦| 亚洲国产高潮在线观看| 福利小视频在线| 国产精品久久亚洲7777| 国产精品99免费看| 92国产精品视频| 忘忧草在线影院两性视频| 5g国产欧美日韩视频| 国产精品91一区二区三区| 黄色一级免费大片| 久久一夜天堂av一区二区三区| 久久精品国产亚洲AV无码男同| 777午夜精品免费视频| 久久中国妇女中文字幕| 国产精品毛片久久久久久久久久99999999| 国产福利久久| 亚洲视频免费| 色婷婷一区二区三区在线观看| 国产精品不卡在线观看| 国产一区二区三区四区视频| 日韩中文字幕在线免费观看| 亚洲欧美国产毛片在线| 在线视频一区二区三区四区| 国产丝袜精品第一页| 亚洲电影观看| 蜜桃999成人看片在线观看| 99国产精品久久久久久久| 欧美日韩中文字幕在线| av首页在线观看| 国产亚洲欧美视频| 日本中文字幕一区二区| 一区二区三区免费看| 国内精品久久久久影院色| 中文字幕av导航| 免费观看30秒视频久久| 国精产品久拍自产在线网站| 欧美日韩成人一区二区| 久草福利在线| 日本高清+成人网在线观看| 欧美aaaaaaa| 亚洲伊人第一页| 免费一级片在线观看| 97久久精品人人做人人爽| 99久久久久久久久| 色偷偷888欧美精品久久久| 成人在线观看免费视频| 男女啪啪的视频| 99视频超级精品| www.五月婷婷.com| 91精品国产麻豆| 黄色在线免费观看网站| 日韩一本精品| 国产成人精品三级| 特级做a爱片免费69| 精品国模在线视频| 牛牛影视久久网| 天天摸天天舔天天操| 久久久欧美精品sm网站| 91影院在线播放| 国内精品伊人久久| 日韩精品久久久久久久电影99爱| 在线观看你懂的视频| 日本一区二区三区久久久久久久久不| 国产成年妇视频| 国产精品久久久久久久久久小说| 欧美国产综合| 久久亚洲AV无码专区成人国产| 国产精品美女一区二区在线观看| 日本免费不卡视频| 成人有码视频在线播放| 狂野欧美性猛交xxxx巴西| 性生交大片免费全黄|