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

Docker的七項優秀實踐

譯文 精選
開發 架構
本文將和您探討7種在編寫Dockerfile時,比較實用的優秀策略與理論實踐。

?譯者 | 陳峻

審校 | 孫淑娟

眾所周知,作為一個文本文檔,Dockerfile包含了用戶創建鏡像的所有命令和說明。Docker可以通過讀取Dockerfile中指令的方式,去自動構建鏡像。因此,大家往往認為編寫Dockerfile理應非常簡單,只需從互聯網上選擇一個示例,并通過自定義來滿足實際需求即可。然而,事實并非如此。

由于生產環境有著嚴格的要求,特別是在安全方面,因此雖然有許多示例能夠適合開發環境,但不一定在生產環境中也合適。另外,由于Docker也提供了一套編寫Dockerfile的指導策略,這就導致了Dockerfile像編寫代碼那樣,您可能知道了相關語法,卻不一定能夠用特定的編程語言寫出干凈、簡潔的代碼。下面,我將和您探討7項在編寫Dockerfile時,比較實用的優秀策略與理論實踐。

一、簡介

首先,讓我們來看一個典型的Dockerfile示例:

Dockerfile
FROM eclipse-temurin:17
RUN mkdir /opt/app
ARG JAR_FILE
ADD target/${JAR_FILE} /opt/app/app.jar
CMD ["java", "-jar", "/opt/app/app.jar"]

根據其內容,該Dockerfile會執行以下操作:

  • lFROM:將Java Docker鏡像--eclipse-temurin:17作為基本鏡像;
  • lRUN:為jar文件創建一個目錄;
  • lARG:通過提供一個參數--JAR_FILE,避免將jar文件名被硬編碼到Dockerfile中;
  • lADD:將jar文件添加到Docker鏡像中;
  • lCMD:包含了在運行容器時必須執行的命令。

可見,上述每個段落生成的Dockerfile,都可以在Git存儲庫的Dockerfiles目錄下被找到。而且在每個段落的末尾處,相應的Dockerfile名稱也會在適用的地方被提及。下面,我們將通過修改該Dockerfile來實現七種優秀實踐。

二、先決條件

在繼續閱讀下文之前,您需要具備的先決條件是:

  • 基本的Linux知識
  • 基本的Java和Spring Boot知識
  • 基本的Docker知識

三、應用示例

為了展示各項優秀實踐,我事先創建了一個包含Spring Web依賴項的基本Spring Boot應用。該應用可以通過在存儲庫的根目錄中調用以下命令來運行:

Shell
$ MVN spring-boot:run

而為了構建Docker鏡像,我將使用Spotify的dockerfile-maven-plugin的一個分支。為此,我會將如下代碼段添加到pom文件中。

XML
<plugin>
<groupId>com.xenoamess.docker</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.25</version>
<configuration>
<repository>mydeveloperplanet/dockerbestpractices</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>

使用該插件的好處在于,您可以輕松地重用配置。同時,為了實現通過Maven命令來創建Docker鏡像,您可以通過調用如下命令來構建jar文件:

Shell
$ mvn clean verify

接著,請通過調用如下命令來構建Docker鏡像:

Shell
$ mvn dockerfile:build

如下命令可讓您運行Docker鏡像:

Shell
$ docker run --name dockerbestpractices mydeveloperplanet/dockerbestpractices:0.0.1-SNAPSHOT

然后,請通過如下代碼來找到運行中的容器的IP地址:

Shell
$ docker inspect dockerbestpractices | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.3",
"IPAddress": "172.17.0.3"

本例的IP地址為172.17.0.3。同時,該應用還包含一個只用來響應hello消息的HelloController。而且,Hello端點可以通過如下方式被調用:

Shell
$ curl http://172.17.0.3:8080/hello
Hello Docker!

至此,一切就緒了。

四、各項優秀實踐

1.該使用哪個鏡像

在前文中,我們提到了本例Dockerfile中使用到的鏡像是eclipse-temurin:17。下面,我們來看看該鏡像是如何被構建的:

  • 請訪問DockerHub的鏈接;
  • 搜索‘eclipse-temurin’;
  • 導航到“標簽”;
  • 搜索17;
  • 按A-Z排序;
  • 單擊標簽17。

如果您仔細觀察頁面每個層的細節,并將其與標簽17-JRE進行比較,就會注意到標簽17包含了一個完整的JDK,而標簽17-JRE只是包含了JRE。當然,后者對于運行Java應用來說已經足夠了,畢竟在生產環境中運行各種應用是不需要整個JDK的。而且,由于開發工具可能會被濫用,因此JDK在使用中也帶有一定的安全問題。此外,標簽17的鏡像在壓縮后的尺寸為235MB,而17-jre的壓縮后尺寸只有89MB。

為了進一步減小鏡像的尺寸,我們可以使用經“瘦身”的鏡像:17-jre-alpine。該鏡像的壓縮后尺寸為59MB,足足比17-jre減少了30MB,因此它更容易被分發。

值得注意到是,以上使用的標簽均為通用標簽,且指向的是最新版本。這對于開發環境來說可能沒有問題,但是對于生產環境而言,您需要事先明確所使用的版本。本例中使用的標簽便是17.0.5_8-jre-alpine。如您想進一步加固安全,則可以將SHA256散列添加到鏡像的版本中。SHA256散列可以在包含了這些層的頁面上找到。當SHA256的哈希值與Dockerfile中定義的哈希值無法對應時,構建Docker鏡像的過程將會失敗。

在本例中,Dockerfile的第一行為:

Dockerfile
FROM eclipse-temurin:17

有了上面的知識,我們可以將該行更改為:

Dockerfile
FROM eclipse-temurin: 17.0.5_8-jre-alpine@sha256:02c04793fa49ad5cd193c961403223755f9209a67894622e05438598b32f210e

如下代碼所示,在Docker鏡像完成構建后,您會注意到,(曾經未壓縮的)鏡像從以前的475MB縮小到現在的188MB。

Shell
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mydeveloperplanet/dockerbestpractices 0.0.1-SNAPSHOT 0b8d89616602 3 seconds ago 188MB

生成的Dockerfile在Git存儲庫中被命名為1-Dockerfile-specific-image。

2.不要以Root用戶運行

默認情況下,應用程序在容器中會以Root用戶身份運行。這顯然會暴露許多漏洞風險,并且也不是必要的。對此,您應該為應用定義一個系統級用戶。如下代碼所示,在啟動容器時的第一行日志中,您可以看到該應用是由Root啟動的。

Shell
2022-11-26 09:03:41.210 INFO 1 --- [ main] m.MyDockerBestPracticesPlanetApplication : Starting MyDockerBestPracticesPlanetApplication v0.0.1-SNAPSHOT using Java 17.0.5 on 3b06feee6c65 with PID 1 (/opt/app/app.jar started by root in /)

我們可以通過向Dockerfile中添加組javauser和用戶javauser,來創建系統級用戶。然后,通過向Dockerfile中添加如下指令來實現。其中,javauser是一個系統級用戶,并不具備登錄權限。注意,為了只創建一個層面,組和用戶的創建步驟都被&符號組合到了一行之中。

Dockerfile
RUN addgroup——system javauser && adduser -S -S /usr/sbin/nologin -G javauser javauser


下表列出了可用于adduser的完整參數集:

  • -h,即DIR主目錄
  • -g,即GECOS字段
  • -s,即登錄SHELL
  • -G,即組
  • -S,即創建系統級用戶
  • -D,即不用設置密碼
  • -H,即不要創建主目錄
  • -u,即UID,用戶id
  • -k,即Skeleton目錄(/etc/SKEL)

同時,您也可以通過添加如下一行,將目錄/opt/apt的所有者更改為新的javauser,否則javauser將無法訪問該目錄:

Dockerfile
RUN chown -R javauser:javauser /opt/app

最后,您需要確保通過USER命令在容器中實際使用了javauser。其對應的完整Dockerfile為:

Dockerfile
FROM eclipse-temurin:17.0.5_8-jre-alpine@sha256:02c04793fa49ad5cd193c961403223755f9209a67894622e05438598b32f210e
RUN mkdir /opt/app
RUN addgroup --system javauser && adduser -S -s /usr/sbin/nologin -G javauser javauser
ARG JAR_FILE
ADD target/${JAR_FILE} /opt/app/app.jar
RUN chown -R javauser:javauser /opt/app
USER javauser
CMD ["java", "-jar", "/opt/app/app.jar"]
為了測試這個新的鏡像,您首先需要通過如下命令,停止并刪除正在運行的容器。
Shell
$ docker stop dockerbestpractices
$ docker rm dockerbestpractices

完成重新構建并再次運行容器后,如下代碼所示,您可以在第一行日志中看到,該應用程序是由javauser啟動的。

Shell
2022-11-26 09:06:45.227 INFO 1 --- [ main] m.MyDockerBestPracticesPlanetApplication : Starting MyDockerBestPracticesPlanetApplication v0.0.1-SNAPSHOT using Java 17.0.5 on ab1bcd38dff7 with PID 1 (/opt/app/app.jar started by javauser in /)

同樣,生成的Dockerfile在Git存儲庫中被命名為2-Dockerfile-do-not-run-as-root。

3.使用WORKDIR

在您使用的Dockerfile中,目錄/opt/app是被一次性創建的,畢竟這是您的工作目錄。就算它并不存在,Docker也會幫您默認創建。因此,您不必每一次都重復這條路徑。例如,您會看到Dockerfile的第二行包含了如下RUN指令:

Dockerfile
RUN mkdir /opt/app

我們可以通過使用WORKDIR指令來稍作改變:

Dockerfile
WORKDIR /opt/app

由于WORKDIR指令已經確保了您在該目錄下,因此您完全可以刪除每一個/opt/app的引用。因此,新的Dockerfile如下代碼所示:

Dockerfile
FROM eclipse-temurin:17.0.5_8-jre-alpine@sha256:02c04793fa49ad5cd193c961403223755f9209a67894622e05438598b32f210e
WORKDIR /opt/app
RUN addgroup --system javauser && adduser -S -s /usr/sbin/nologin -G javauser javauser
ARG JAR_FILE
ADD target/${JAR_FILE} app.jar
RUN chown -R javauser:javauser .
USER javauser
CMD ["java", "-jar", "app.jar"]

完成構建并重新運行容器后,您可以在如下日志中看到,jar文件仍然在/opt/app目錄中被執行:

Shell
2022-11-26 16:07:18.503 INFO 1 --- [ main] m.MyDockerBestPracticesPlanetApplication : Starting MyDockerBestPracticesPlanetApplication v0.0.1-SNAPSHOT using Java 17.0.5 on fe5cf9223143 with PID 1 (/opt/app/app.jar started by javauser in /opt/app)

同樣,生成的Dockerfile在Git存儲庫中被命名為3-Dockerfile-use-workdir。

4.使用ENTRYPOINT

CMD指令和ENTRYPOINT指令之間是存在區別的。簡而言之,兩者的使用場景分別是:

ENTRYPOINT:當您總需要執行各種命令,才能構建出可執行的Docker鏡像時,只要您愿意,完全可以將參數附加到命令中。

CMD:當您想提供一個默認的參數集,且允許在容器運行時被命令行覆蓋時。

那么,在運行Java應用的情況下,請最好使用ENTRYPOINT。例如,原本Dockerfile的最后一行為:

Dockerfile
CMD ["java", "-jar", "app.jar"]

現在可以變為:

Dockerfile
ENTRYPOINT ["java", "-jar", "app.jar"]

完成構建并重新運行容器,您并不會注意到有任何特定的差異,容器仍然會照常運行。生成的Dockerfile在Git存儲庫中被命名為4-Dockerfile-use-entrypoint。

5.使用COPY代替ADD

COPY和ADD指令也似乎比較類似。然而,COPY要比ADD更好,畢竟COPY只是復制文件到鏡像,而ADD還有一些額外的特性,比如添加來自遠程資源的文件。

Dockerfile中的ADD命令行為:

Dockerfile
ADD target/${JAR_FILE} app.jar

如果改用COPY命令,則為:

Dockerfile
COPY target/${JAR_FILE} app.jar

重新構建并運行容器,您同樣看不出顯著變化,除了在構建日志中顯示的是COPY命令,而不是ADD命令。生成的Dockerfile在Git存儲庫中可用,名稱為5-Dockerfile-use-copy-instead-of-add。

6.使用.dockerignore

為了防止Docker鏡像被意外地添加文件,您可以使用.dockerignore文件來指定哪些文件可以被發送到Docker守護進程中,或者是在鏡像中被使用。一種值得推薦的方法是:忽略所有的文件,僅顯式地添加那些您允許的文件。通過在.dockerignore文件中添加星號,我們可以排除所有的子目錄和文件。當然,為了將jar文件放入構建的上下文,您也可以使用感嘆號來避免忽略jar文件。如下dockerignore文件所示,我們可以將它添加到運行Docker命令的目錄中。例如,在本例中,我們將其添加到Git存儲庫的根目錄上。

Plain Text
**/**
!target/*.jar

完成構建并重新運行容器后,其變化可能并不顯著。但是當您使用npm開發時,由于node_modules目錄不再被復制到Docker構建的上下文中,因此您能夠明顯地感受到創建Docker鏡像的過程被縮短了。注意,您可以直接在Git存儲庫的Dockerfiles目錄下找到dockerignore文件。

7.以non-root方式運行Docker守護進程

默認情況下,Docker守護進程是以Root身份運行的。通過前文的討論,您一定覺察到了潛在的安全問題。慶幸的是,從Docker v20.10開始,我們可以non-root用戶運行Docker守護進程了。

此外,您也可以利用無守護進程(daemonless)的容器引擎--Podman(https://podman.io/)。以默認non-root方式運行。雖然有人認為Podman是Docker的臨時替代品,但是它們在容器中掛載卷的方面有所區別。

五、小結

在上文中,我們介紹了7種編寫Dockerfile和運行容器的最佳實踐。雖然編寫Dockerfile并不復雜,但是若想正確、規范地編寫,還是需要您花些時間去研究和理解其使用說明的。

原文鏈接:https://dzone.com/articles/docker-best-practices

譯者介紹

陳峻 (Julian Chen),51CTO社區編輯,具有十多年的IT項目實施經驗,善于對內外部資源與風險實施管控,專注傳播網絡與信息安全知識與經驗。?

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2024-02-22 16:54:02

2023-09-20 09:00:00

2020-09-29 07:19:54

InnoDBMySQL存儲引擎

2020-11-23 18:39:54

容器Kubernetes架構

2019-09-06 09:00:00

開發技能代碼

2022-08-01 10:41:03

人工智能認證人工智能

2020-09-03 07:00:00

Salesforce測軟件測試

2019-12-16 12:11:53

Docker容器Kubernetes

2022-06-28 05:54:10

機器身份網絡攻擊網絡安全

2023-02-14 10:37:43

API端點版本

2023-11-14 14:25:09

數據湖大數據

2022-01-19 11:17:50

服務質量 QoS云服務網絡流量

2021-10-18 13:26:15

大數據數據分析技術

2022-07-25 14:24:53

Docker容器安全

2019-05-21 10:45:44

Docker架構容器

2020-03-16 08:48:18

Kubernetes容器云原生

2019-07-30 09:00:00

Snowflake數據庫性能調優

2022-11-30 15:28:55

2024-06-07 13:04:02

2021-07-05 10:09:52

IT領導者混合工作
點贊
收藏

51CTO技術棧公眾號

成人免费一区二区三区| 国产免费又粗又猛又爽| 日本精品一二区| 国产精品jizz在线观看美国| 日韩欧美不卡在线观看视频| 2022中文字幕| 欧美自拍偷拍一区二区| 亚洲欧美卡通另类91av| 一区二区在线视频| 亚洲欧美日韩一二三区| 77thz桃花论族在线观看| 91老师片黄在线观看| 国产成人精品午夜| 懂色av粉嫩av蜜臀av一区二区三区| av国产精品| 亚洲夂夂婷婷色拍ww47| 日本中文不卡| 国产情侣一区二区| 在线成人h网| 亚洲区一区二区| 中文 日韩 欧美| 日韩精品极品| 亚洲少妇最新在线视频| 久久久福利视频| 中文字幕自拍偷拍| 在线成人欧美| xxxxx成人.com| 中文字幕精品久久久| 日韩精品第二页| 69久久夜色| 日韩一区亚洲二区| 精品99999| 国产又大又黄又粗又爽| 金瓶狂野欧美性猛交xxxx| 国产日韩综合av| av成人午夜| 伊人久久亚洲综合| 一本久道久久综合狠狠爱| 久久精品成人动漫| 日本高清www| 在线日韩成人| 91精品国产一区二区三区香蕉| 亚洲自偷自拍熟女另类| 伊人在我在线看导航| 国产欧美日韩精品a在线观看| 成人毛片网站| 国产精品久久久久久久成人午夜| 午夜影院日韩| 国语自产精品视频在线看抢先版图片 | 日日夜夜精品免费| 国产一区欧美二区| 国产精品狼人色视频一区| 日本熟妇毛耸耸xxxxxx| 国产综合婷婷| 欧美精品久久久久久久久| 小早川怜子一区二区的演员表| 免费久久精品| 亚洲韩国欧洲国产日产av| 性生活在线视频| 欧美一级做一级爱a做片性| 日韩欧美在线视频观看| 国产午夜福利100集发布| 久久不射影院| 一区二区三区毛片| 四虎永久免费网站| dy888亚洲精品一区二区三区| 欧美激情综合五月色丁香| 欧美一区二区综合| 全色精品综合影院| 久久久www免费人成精品| 裸模一区二区三区免费| 青青草视频在线观看| www欧美成人18+| 久久国产日韩欧美| 丝袜视频国产在线播放| 91视频在线观看免费| 国产一区自拍视频| 99精品人妻无码专区在线视频区| 久久国产三级精品| 51精品在线观看| 日本在线免费观看| 波多野结衣不卡视频| 国产精品迅雷| 欧美三级在线看| 午夜视频在线网站| 日韩精品三级| 精品国内片67194| 无码人妻久久一区二区三区蜜桃| 草草视频在线一区二区| 欧美日韩电影在线| 欧美一区二区日韩| 人人爽人人av| 日韩av免费| 欧美顶级少妇做爰| www.偷拍.com| 牲欧美videos精品| 国产一区二区三区久久精品| 91麻豆精品久久毛片一级| 综合天堂久久久久久久| 欧美整片在线观看| 999国产精品视频免费| 99re热这里只有精品免费视频| 欧美一区二区三区免费在线看 | 精品国产一区二区三区小蝌蚪| 中文字幕日韩欧美| 免费在线视频一区二区| 日韩成人一级大片| 国产一区二区三区四区hd| 91啦中文在线| 亚洲成人动漫在线观看| 波多野结衣xxxx| 欧美挤奶吃奶水xxxxx| 日韩在线不卡视频| 日本高清www免费视频| 国产一区啦啦啦在线观看| 免费亚洲一区二区| 久久香蕉av| 日韩视频一区在线观看| 91麻豆制片厂| 久久九九电影| 精品欧美一区二区三区久久久| 麻豆网站在线免费观看| 色婷婷国产精品久久包臀| 国产精久久久久| 欧美大片aaaa| 国产成人高清激情视频在线观看| 欧美自拍第一页| 亚洲精品高清视频在线观看| 91小视频网站| 精品盗摄女厕tp美女嘘嘘| 8090成年在线看片午夜| 蜜桃视频污在线观看| 亚洲欧美日韩成人高清在线一区| 三级在线免费看| 免费一区二区| 欧美亚洲日本网站| 视频一区二区在线播放| 偷拍日韩校园综合在线| 91精品又粗又猛又爽| 欧美高清日韩| 亚洲综合自拍一区| 超碰在线免费播放| 91精品国产综合久久蜜臀| 欧美视频一区二区在线| 麻豆91在线播放| 一区二区在线高清视频| 欧美综合社区国产| 在线性视频日韩欧美| 欧美性受xxx黑人xyx性爽| 久久五月婷婷丁香社区| 欧美激情国产精品日韩| 婷婷成人影院| 日韩av片永久免费网站| 国产中文在线视频| 欧美视频一区二区在线观看| 欧美午夜激情影院| 美女诱惑一区二区| 国产卡一卡二在线| 日韩精品一区二区三区免费视频| 欧美日韩第一页| 国产91免费在线观看| 婷婷成人激情在线网| 少妇毛片一区二区三区| 日韩二区三区在线观看| 日韩在线第一区| 日韩成人免费av| 超碰精品一区二区三区乱码| 国产成人毛毛毛片| 五月激情综合婷婷| 日韩精品无码一区二区三区久久久| 久久资源在线| 一区二区三区四区在线视频| av在线成人| 国产69精品99久久久久久宅男| 少妇无码一区二区三区| 欧美性生交大片免费| 国精产品一区一区| 国产成人在线视频播放| 欧美综合在线播放| 日韩免费视频| 国产精品成人一区二区三区| jizz内谢中国亚洲jizz| 俺去啦;欧美日韩| 天天av天天翘| 欧美日韩一区不卡| 久久免费黄色网址| 久久久久国产成人精品亚洲午夜| 制服丝袜中文字幕第一页| 99riav国产精品| 一本久道久久综合| 久久亚州av| 国产欧美精品日韩| 91视频欧美| 久久精品国产欧美亚洲人人爽| 人妻少妇精品无码专区| 欧美日韩精品二区第二页| 国产在线免费视频| 国产精品麻豆一区二区| 少妇熟女视频一区二区三区 | 国产欧美日韩精品一区二区免费 | 亚洲欧洲日产国码二区| 午夜不卡久久精品无码免费| 麻豆专区一区二区三区四区五区| 欧美这里只有精品| 欧美日韩中文一区二区| 国产免费一区二区三区| 成人在线视频观看| 97久久精品在线| 黄色的网站在线观看| 亚洲欧美999| 成人激情四射网| 欧美三级一区二区| 国产又黄又猛又粗又爽| 亚洲一区在线免费观看| 亚洲综合久久av一区二区三区| 久久综合九色综合97_久久久| 乳色吐息在线观看| 美女视频网站久久| 欧美视频免费播放| 日韩视频一区二区三区在线播放免费观看| 制服国产精品| 成人3d精品动漫精品一二三| 久久艳妇乳肉豪妇荡乳av| 日韩最新av| 亚洲一区二区中文| 欧美成人福利| 国产精品夜色7777狼人| 电影一区二区三| 91av在线不卡| www.九色在线| 国模私拍一区二区三区| 亚洲按摩av| 欧美精品在线网站| 黄av在线播放| 久久精彩免费视频| 免费在线午夜视频| 三级精品视频久久久久| 国产日韩精品在线看| 亚洲欧洲在线视频| 噜噜噜噜噜在线视频| 日韩国产精品一区| 日本不卡视频一区二区| 亚洲女人天堂色在线7777| 日本韩国精品一区二区| 亚洲毛片在线看| 欧美白人做受xxxx视频| 亚洲人成欧美中文字幕| 久久视频www| 一本色道久久88综合亚洲精品ⅰ| 国产视频在线看| 中文字幕一精品亚洲无线一区 | 熟妇人妻va精品中文字幕| 久色成人在线| 午夜免费一区二区| 麻豆高清免费国产一区| 天堂av在线8| 国产一区二区调教| 无码国产69精品久久久久网站 | 欧美黄色直播| 教室别恋欧美无删减版| 亚洲精美视频| 99久久久久国产精品| 国产欧美自拍视频| 国产综合精品一区| 青青青在线播放| 蜜桃av噜噜一区二区三区小说| 中文字幕亚洲欧洲| 国产成人av一区二区| 色天使在线视频| 国产亲近乱来精品视频| 国精品人伦一区二区三区蜜桃| 亚洲人123区| 国产真实乱偷精品视频| 欧美性猛交xxxx乱大交极品| 中国老头性行为xxxx| 日韩视频一区二区三区| 男人天堂亚洲二区| 日韩在线观看精品| av影片在线| 日本亚洲欧美三级| 精品伊人久久| 久久精品国产第一区二区三区最新章节 | 欧美一区二区三区日韩视频| 污视频在线免费观看| 伊人久久久久久久久久久久久| jizz性欧美10| 欧洲成人免费视频| 精品国产乱码久久久久久樱花| 国产欧美日韩一区| 日韩欧美二区| 国产毛片视频网站| 久久精品国产**网站演员| 中国特级黄色大片| 国产精品伦一区二区三级视频| 久久午夜无码鲁丝片| 在线精品亚洲一区二区不卡| 精品国自产拍在线观看| 国产一区二区成人| 国产第一页在线| 国产精品一区二区三区毛片淫片| 91久久偷偷做嫩草影院电| 日本在线观看一区二区三区| 亚洲国产高清一区| 毛片毛片毛片毛| 2023国产精品视频| 欧美毛片在线观看| 欧美日本一区二区三区四区| 亚洲区小说区图片区| 久久人人爽人人爽人人片亚洲| 欧美成人ⅴideosxxxxx| 国产精品一区二区在线观看| 97精品视频在线看| 国产成人无码一二三区视频| 成人免费视频免费观看| 麻豆网址在线观看| 欧洲日韩一区二区三区| 手机av在线免费观看| 久久久精品久久| 久久精品 人人爱| 欧美一级片免费观看| 亚洲国产高清视频| 18深夜在线观看免费视频| 国产精品久久久一本精品| 99re这里只有精品在线| 亚洲毛茸茸少妇高潮呻吟| 超碰在线视屏| 国产视频精品网| 欧美日韩理论| 久久黄色一级视频| 亚洲欧美精品午睡沙发| 伊人久久一区二区| 中文综合在线观看| 电影一区电影二区| 欧美日韩在线播放一区二区| 亚洲欧美bt| theav精尽人亡av| 岛国av一区二区| 熟妇人妻av无码一区二区三区| 欧美激情视频在线| a看欧美黄色女同性恋| 日韩精品一区二区免费| 国产不卡在线视频| 欧美日韩激情在线观看| 日韩精品一区二区三区视频播放| 中文字幕有码在线视频| 亚洲mm色国产网站| 午夜国产精品视频| 国产亚洲精品成人a| 午夜视黄欧洲亚洲| 四虎影视在线播放| 日本视频久久久| 日韩精品久久久久久久电影99爱| 日本久久精品一区二区| 国产精品免费人成网站| 国产一区二区三区成人| 久久国产精品亚洲| 国产成人精品福利| 国产精品欧美激情在线观看| 久久精品亚洲精品国产欧美kt∨| 香蕉污视频在线观看| 亚洲最新视频在线| 欧美黄色a视频| 特级西西444| 97精品超碰一区二区三区| 特级西西444www大精品视频免费看| 亚洲精品有码在线| 成人黄页网站视频| 青青草视频国产| 91影院在线免费观看| 波多野结衣视频网址| 日日骚av一区| 国产精品白丝一区二区三区| 午夜肉伦伦影院| 国产精品久久久久久久久晋中| 精品国产999久久久免费| 91精品国产91久久久久| 欧美色图一区| 亚洲区 欧美区| 欧美性xxxxx| 大地资源网3页在线观看| 国产日韩欧美一区二区| 日韩av一级片| 免费在线黄色网| 精品视频在线观看日韩| 欧美成人黄色| 日韩精品 欧美| 中文字幕中文字幕一区| 国内爆初菊对白视频| 国产精品成熟老女人| 欧美精选在线| 国产在线综合视频| 精品第一国产综合精品aⅴ| www.com.cn成人| 三级在线免费观看| 国产亚洲综合色| 懂色av一区二区三区四区| 国产成人精品在线| 在线精品在线| 亚洲精品自拍视频在线观看| 亚洲国产日韩一区|