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

Docker小白到實戰(zhàn)之Dockerfile解析及實戰(zhàn)演示,果然順手

開發(fā) 前端
使用第三方鏡像肯定不是學(xué)習(xí)Docker的最終目的,最想要的還是自己構(gòu)建鏡像;將自己的程序、文件、環(huán)境等構(gòu)建成自己想要的應(yīng)用鏡像,方便后續(xù)部署、啟動和維護(hù);而Dockerfile就是專門做這個事的,通過類似簡單編碼的形式,最終就可以構(gòu)建出屬于自己的鏡像,所以必須學(xué)起來。

[[422701]]

本文轉(zhuǎn)載自微信公眾號「Code綜藝圈」,作者Code綜藝圈  。轉(zhuǎn)載本文請聯(lián)系Code綜藝圈公眾號。

前言

使用第三方鏡像肯定不是學(xué)習(xí)Docker的最終目的,最想要的還是自己構(gòu)建鏡像;將自己的程序、文件、環(huán)境等構(gòu)建成自己想要的應(yīng)用鏡像,方便后續(xù)部署、啟動和維護(hù);而Dockerfile就是專門做這個事的,通過類似簡單編碼的形式,最終就可以構(gòu)建出屬于自己的鏡像,所以必須學(xué)起來。

正文

1. Dockerfile簡介

在日常開發(fā)過程中,需要編寫對應(yīng)的程序文件,最后通過編譯打包生成對應(yīng)的可執(zhí)行文件或是類庫;這里的Dockerfile文件就好比平時我們編寫的程序文件,但內(nèi)部的語法和關(guān)鍵字并沒有程序那么復(fù)雜和繁多,相對來說還是很簡單的,最后通過docker build命令就可以將對應(yīng)的程序、文件、環(huán)境等構(gòu)建成鏡像啦。

在第一篇文章最后就簡單使用了Dockerfile構(gòu)建了一個鏡像,這里重新認(rèn)識下這個Dockerfile文件,如下圖:

Dockerfile就是一個文本文件,但不需要指定后綴類型;文件內(nèi)容中FROM、WORKDIR、COPY等就是關(guān)鍵字,按照規(guī)則寫好之后,就可以將指定的文件構(gòu)建為鏡像啦。

構(gòu)建操作統(tǒng)一由Docker daemon進(jìn)行,它會先對文件內(nèi)容語法進(jìn)行初步驗證(語法不對就會返回錯誤信息),然后逐一運(yùn)行指令,每次生成一個新的鏡像層,直到執(zhí)行完所有指令,就構(gòu)建出最終的鏡像。 Dockerfile、鏡像、容器的關(guān)系如下:

總結(jié)一下Dockerfile的知識點(diǎn);

  • 構(gòu)建時,指令從上到下逐一執(zhí)行;
  • 每條指令都會創(chuàng)建一個新的鏡像層,每一層都是前一層變化的增量;
  • 使用#號進(jìn)行注釋;
  • 關(guān)鍵字約定都是大寫,后面至少跟一個參數(shù);

2. Dockerfile關(guān)鍵字

2.1 FROM 關(guān)鍵字

指定基礎(chǔ)鏡像, 就是新鏡像是基于哪個鏡像構(gòu)建的。

比如建房子,可以在一塊空地開始,也可以在別人打好的基石基礎(chǔ)上開始, 甚至可以在別人弄好的毛坯房基礎(chǔ)上裝修即可。

如果要建房的話,可以FROM 空地,或者FROM 打好的基石,或者 FROM 毛坯房, 反正最后建好房就行;

這里需要注意的是,不管咋樣,空地是少不了的;構(gòu)建鏡像也一樣,最底層肯定有一個最基礎(chǔ)的鏡像。

建議使用官方的鏡像作為基礎(chǔ)鏡像,推薦使用Alpine這種類型,因為它是嚴(yán)格控制的,而且體積很小。

用法如下:

  1. FROM [--platform=<platform>] <image>[:<tag>] [AS <name>] 
  2. ARG  CODE_VERSION=latest # 定義變量 
  3. FROM base:${CODE_VERSION} # 指定基礎(chǔ)鏡像 

2.2 MAINTAINER/LABEL 關(guān)鍵字

MAINTAINER 指定維護(hù)者的相關(guān)信息,也就是構(gòu)建的鏡像是由誰構(gòu)建的,他的郵箱是什么;

LABLE 就是用于給鏡像打標(biāo)簽,以鍵值對的方式進(jìn)行指定,相對MAINTAINER 來說比較靈活,可以使用LABLE替代MAINTAINER。

用法如下:

  1. # LABEL <key>=<value> <key>=<value> <key>=<value> ... 
  2. LABEL com.example.version="0.0.1-beta"  
  3. LABEL vendor1="ACME Incorporated" 

2.3 RUN 關(guān)鍵字

構(gòu)建過程中需要運(yùn)行的命令, 比如在構(gòu)建過程中需要執(zhí)行一條命令下載對應(yīng)的包,這里就需要用到RUN關(guān)鍵字;

用法如下:

  1. # 兩種命令方式都可以 
  2. # RUN <command> 
  3. # RUN ["executable""param1""param2"
  4. # 執(zhí)行命令,Linux支持的相關(guān)命令 
  5. RUN /bin/bash -c 'source $HOME/.bashrc; echo $HOME' 
  6. RUN ["/bin/bash""-c""echo hello"

2.4 WORKDIR 關(guān)鍵字

根據(jù)鏡像啟動容器時,通常需要進(jìn)入到容器內(nèi)部;則可以通過WORKDIR指定進(jìn)入容器時的目錄;

用法如下:

  1. WORKDIR /path # 指定路徑 

2.5 ENV 關(guān)鍵字

可以在構(gòu)建過程中設(shè)置環(huán)境變量;就好比平時我們安裝完程序,需要配置環(huán)境變量,方便訪問;ENV關(guān)鍵字就是根據(jù)需求可以設(shè)置對應(yīng)的環(huán)境變量;

用法如下:

  1. # ENV <key>=<value> ... 
  2. # 指定環(huán)境變量 
  3. ENV PATH=/usr/local/postgres-$PG_MAJOR/bin:$PATH 

2.6 ADD 關(guān)鍵字

將宿主機(jī)的資源拷貝進(jìn)鏡像中,會自動解壓縮,而且還能從遠(yuǎn)程宿主機(jī)中讀取資源并拷貝到鏡像中;

用法如下:

  1. # 兩種命令方式都可以 
  2. ADD [--chown=<user>:<group>] <src>... <dest> 
  3. ADD [--chown=<user>:<group>] ["<src>",... "<dest>"] 
  4. ADD https://example.com/big.tar.xz /usr/src/things/ 

2.7 COPY 關(guān)鍵字

將宿主機(jī)的資源拷貝到鏡像中,只支持讀取構(gòu)建所在宿主機(jī)的資源。相對于ADD關(guān)鍵字來說更加透明,操作什么就是什么。

用法如下:

  1. # 拷貝資源到容器,兩種命令格式都行 
  2. # COPY [--chown=<user>:<group>] <源地址>... <目標(biāo)地址> 
  3. # COPY [--chown=<user>:<group>] ["<源地址>",... "<目標(biāo)地址>"] 
  4. COPY requirements.txt /tmp/ 

2.8 VOLUME 關(guān)鍵字

掛載數(shù)據(jù)卷,之前在常用命令那說到通過命令的方式進(jìn)行數(shù)據(jù)卷掛載,在Dockerfile中使用VOLUME指定掛載路徑即可,根據(jù)構(gòu)建出來的鏡像運(yùn)行容器時,默認(rèn)就有構(gòu)建時掛載的信息。

用法如下:

  1. # 掛載數(shù)據(jù)卷 
  2. VOLUME ["/data"
  3. VOLUME /myvol 

2.9 EXPOSE 關(guān)鍵字

指定運(yùn)行容器時對外暴露的端口;即根據(jù)鏡像啟動容器時,容器向外暴露端口。

用法如下:

  1. # EXPOSE <port> [<port>/<protocol>...] 
  2. EXPOSE 80/tcp # 暴露端口 
  3. EXPOSE 80/udp 

2.10 CMD 關(guān)鍵字

指定啟動容器時要執(zhí)行的命令,只有最后一個會生效;即根據(jù)鏡像啟動容器時,容器需要執(zhí)行啥命令。

用法如下:

  1. # 兩種格式都行 
  2. # CMD ["param1","param2"
  3. # CMD command param1 param2 
  4. # 執(zhí)行命令統(tǒng)計 行數(shù)、字?jǐn)?shù)、字節(jié)數(shù) 
  5. CMD echo "This is a test." | wc - 
  6. # 執(zhí)行wc --help命令  
  7. CMD ["/usr/bin/wc","--help"

2.11 ENTRYPOINT 關(guān)鍵字

指定根據(jù)鏡像啟動容器時要執(zhí)行的命令,可以追加命令;執(zhí)行時機(jī)同CMD。

用法如下:

  1. # ENTRYPOINT ["executable""param1""param2"
  2. # ENTRYPOINT command param1 param2 
  3. ENTRYPOINT ["top""-b"

2.12 ARG 關(guān)鍵字

通過ARG指令定義了一個變量;和寫代碼時定義的變量一樣,根據(jù)需要,定義就行啦。

用法如下:

  1. # ARG <name>[=<default value>] 
  2. ARG user1=someuser 
  3. ARG buildno=1 

2.13 ONBUILD 關(guān)鍵字

基于父鏡像構(gòu)建新的鏡像時,父鏡像的OBUILD會被觸發(fā)。

3. 實戰(zhàn)演示

這里還是以.NetCore項目構(gòu)建鏡像為例,其他編程語言的項目同理;這次咱們一步一步的來,搞清楚每個命令的使用。

以下關(guān)于項目創(chuàng)建和發(fā)布的具體細(xì)節(jié)在第一篇最后就分享了,小伙伴可以參考,這里主要演示Dockerfile關(guān)鍵字。

3.1 準(zhǔn)備項目和Dockerfile文件

新建一個項目,啥都不需要改,就用默認(rèn)的接口演示,如下:

Dockerfile內(nèi)容如下:

  1. # 指定基礎(chǔ)鏡像,在此基礎(chǔ)上構(gòu)建自己的項目鏡像 
  2. FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 
  3. # 指定自己的工作目錄,進(jìn)入容器時目錄 
  4. WORKDIR /myApp 
  5. # 將構(gòu)建上下文目錄下的文件拷貝到容器的當(dāng)前工作目錄中,即/myApp 
  6. COPY . . 
  7. # 容器向外暴露端口,項目以什么端口啟動就暴露對應(yīng)的端口 
  8. EXPOSE 80 
  9. # 執(zhí)行命令,這里默認(rèn)是以80端口啟動的 
  10. #就類似于在Linux系統(tǒng)的項目目錄下執(zhí)行 dotnet DockerfileDemo.dll 是一樣的 
  11. ENTRYPOINT ["dotnet""DockerfileDemo.dll"

記得右鍵Dockerfile,選擇屬性,然后設(shè)置Dockerfile為始終復(fù)制,這樣后續(xù)更新變動,發(fā)布時就會自動拷貝到對應(yīng)的發(fā)布目錄。

3.2 以文件的形式發(fā)布項目,并連同Dockerfile拷貝到安裝好Docker的機(jī)器上進(jìn)行構(gòu)建(這里還是用我的云服務(wù)器);

docker build -t myimage:v1.0 .解析:

  • -t:指定鏡像的名字及標(biāo)簽,通常 name:tag 或者 name 格式,myimage就是鏡像名字,v1.0就是tag;
  • -f :指定要使用的Dockerfile路徑,這里由于Dockerfile在當(dāng)前路徑,所以不用指定;
  • 最后面的點(diǎn):官方稱為構(gòu)建上下文,點(diǎn)表示指定為當(dāng)前目錄。會把指定的這個目錄下的文件發(fā)送給docker daemon進(jìn)行構(gòu)建,所以千萬不要指定/(斜杠代表根目錄,有很多文件的)。
  • 其他選項參數(shù)小伙伴可以根據(jù)需要使用,以上是比較重要的。

3.3 根據(jù)構(gòu)建出來的鏡像啟動容器,看Dockerfile中的命令效果;

啟動容器如下:

ENTRYPOINT ["dotnet", "DockerfileDemo.dll"]這行代碼就等同于的項目目錄下直接執(zhí)行 dotnet DockerfileDemo.dll是一樣的,目的就是啟動我們的項目。

通過docker logs可以查看容器內(nèi)部的日志,如下:

3.4 豐富化Dockefile文件內(nèi)容并查看構(gòu)建之后的細(xì)節(jié)

文件內(nèi)容如下:

  1. # 指定基礎(chǔ)鏡像,在此基礎(chǔ)上構(gòu)建自己的項目鏡像 
  2. FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 
  3. # 指定維護(hù)人 
  4. MAINTAINER CodeZYQ<1137533407@qq.com> 
  5. # 打標(biāo)簽 
  6. LABEL createname="CodeZYQ" 
  7. # 指定自己的工作目錄,進(jìn)入容器時目錄 app 
  8. WORKDIR /myapp 
  9. # 將構(gòu)建上下文目錄下的文件拷貝到容器中的工作目錄中 
  10. COPY . . 
  11. # 定義變量 
  12. ARG myPort=8080 
  13. # 使用環(huán)境變量方式改變啟動端口,拼接用到了定義的變量 
  14. ENV ASPNETCORE_URLS=http://+:$myPort 
  15. # 通過RUN 執(zhí)行相關(guān)命令,根據(jù)需要執(zhí)行相關(guān)命令 
  16. RUN mkdir testDir 
  17. # 掛載數(shù)據(jù)卷,這里模擬掛載日志目錄 
  18. VOLUME /Logs 
  19. # 容器向外暴露端口,項目以什么端口啟動就暴露對應(yīng)的端口 
  20. EXPOSE $myPort 
  21. # 執(zhí)行命令,這里默認(rèn)是以80端口啟動的 
  22. # 就類似于在Linux系統(tǒng)的項目目錄下執(zhí)行 dotnet DockerfileDemo.dll 是一樣的 
  23. ENTRYPOINT ["dotnet""DockerfileDemo.dll"

執(zhí)行如下命令,構(gòu)建新的鏡像:

通過docker logs看看容器日志,如下:

看看數(shù)據(jù)卷掛載是否成功,進(jìn)入容器,看根目錄下就會多了Logs目錄,也可以通過docker inspect 容器 看容器詳細(xì)信息,如下:

標(biāo)簽也打成功了:

也可以通過docker inspect 鏡像查看鏡像內(nèi)部的詳細(xì)信息,執(zhí)行命令docker inspect newimage如下:

關(guān)于步驟和效果,在Dockerfile注釋和圖表中已經(jīng)詳細(xì)描述。

3.5 CMD和ENTRYPOINT的區(qū)別

兩個命令都是啟動容器時指定執(zhí)行命令和對應(yīng)的參數(shù),但兩者稍有不同,如下:

  • CMD:只能最后一個命令會生效,命令會被docker run之后的參數(shù)替換掉;
  • ENTRYPOINT:可以追加命令,比如增加參數(shù);

上面構(gòu)建出來的newimage鏡像用到的是ENTRYPOINT,所以我們先來測試一下ENTRYPOINT,如下:

docker run啟動容器時指定了參數(shù) --urls="http://+:9999",容器正常啟動,并且參數(shù)還能生效,等同于在當(dāng)前目錄直接執(zhí)行如下命令:

  1. dotnet DockerfileDemo.dll --urls="http://+:9999" 

現(xiàn)在把ENTRYPOINT換成CMD試試,如下:

  1. # 在以上的Dockerfile中 
  2. # 將ENTRYPOINT ["dotnet""DockerfileDemo.dll"]換成CMD,如下: 
  3. CMD ["dotnet""DockerfileDemo.dll"

然后重新構(gòu)建一個鏡像試試,測試如下:

如上圖,對于CMD而言,如果在運(yùn)行容器時,后面指定參數(shù),這個參數(shù)就會把CMD命令替換掉,不能拼接,導(dǎo)致命令不對,所以報錯;但這樣就可以執(zhí)行,如下:

如果在當(dāng)前構(gòu)建的上下文目錄中不想要一些文件參與構(gòu)建,可以通過在.dockerignore文件中進(jìn)行配置,這個和git中的.gitignore一個道理,編寫也比較簡單,這里就不演示了。

對了,.NetCore的鏡像列表可以參照這個地址:https://hub.docker.com/_/microsoft-dotnet-aspnet/,每個鏡像都有對應(yīng)的Dockerfile,感興趣的小伙伴可以點(diǎn)進(jìn)去看看,參考參考。

總結(jié)

 

關(guān)于Dockerfile的演示就先說那么多,小伙伴們一定要舉一反三,上面演示只是一個小例子而已,在正式項目中可以根據(jù)需要,編輯出屬于符合需求的Dockefile文件,最終構(gòu)建出方便、好用的鏡像,這樣開發(fā)和運(yùn)維就和諧了(嘿嘿嘿)。

 

責(zé)任編輯:武曉燕 來源: Code綜藝圈
相關(guān)推薦

2020-10-26 15:01:02

Spring Boot源碼參數(shù)

2021-08-26 06:58:15

Docker容器數(shù)據(jù)卷

2024-03-12 09:50:27

Raft協(xié)議KRaft

2025-04-27 01:33:23

MongoDBDocker容器

2013-11-14 10:27:54

2025-09-26 02:00:55

JDKCPU內(nèi)存

2009-11-16 10:49:43

PHP上傳文件代碼

2023-03-02 07:37:53

2023-03-30 07:35:55

2025-04-22 07:52:59

2024-12-18 18:53:48

2010-06-04 09:33:28

連接MySQL數(shù)據(jù)庫

2010-09-13 17:45:37

2022-11-01 07:23:55

Dockernetcore程序

2010-06-02 14:42:57

MySQL四舍五入

2010-09-13 14:03:58

2009-09-14 16:12:57

LINQ刪除記錄

2024-12-19 08:00:00

人工智能LLMLangChain

2023-09-12 08:03:49

容器鏡像

2018-06-19 14:07:04

Python編程開發(fā)面向?qū)ο?/a>
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

亚洲最新视频在线| 亚洲一区二区av电影| 欧美一级视频在线观看| 精品黑人一区二区三区观看时间| 高潮在线视频| 欧美国产乱子伦| 亚洲最大的av网站| 亚洲国产成人精品激情在线| 91精品啪在线观看国产爱臀| 亚洲伊人伊色伊影伊综合网| 国产美女精品久久久| 天堂а√在线中文在线新版 | 黄上黄在线观看| 美女网站在线免费欧美精品| 久久精品国产亚洲一区二区| www.久久久久久久久久久| 毛片网站在线看| 国产精品素人一区二区| 成人在线视频网址| 最近中文字幕av| 亚洲天堂偷拍| 精品国内产的精品视频在线观看| 中文字幕天堂网| 丁香久久综合| 欧美日韩国产一区在线| 在线观看日韩片| 欧美777四色影视在线| 韩国一区二区视频| 国产精品久久久久av| 免费在线观看av网址| 精品国产一区二区三区av片| 欧美福利视频一区| 国产a级片免费观看| 一区二区三区伦理| 国产精品不卡在线| 日韩妆和欧美的一区二区| www.五月婷婷| 精久久久久久久久久久| 国产99视频在线观看| 国产网址在线观看| 欧美一区二区三区久久精品| 日韩成人在线视频| 日本中文字幕有码| 国产成人久久精品一区二区三区| 色综合久久中文综合久久牛| 美女黄色片网站| 99免在线观看免费视频高清| 成人综合激情网| 99中文视频在线| 国产精品一区二区av白丝下载 | 久久国产精品久久久| 国产伦理片在线观看| 久久这里只有精品一区二区| 欧美蜜桃一区二区三区| 一区二区在线播放视频| 欧美电影免费观看网站| 欧美日韩国产在线| 日韩免费一级视频| 日韩脚交footjobhdboots| 亚洲一区在线观看视频| 久久久成人精品一区二区三区| 国产三级在线免费| 日本一区二区三区国色天香 | 中文字幕亚洲影院| 北岛玲精品视频在线观看| 欧美色图片你懂的| 久久婷五月综合| 亚洲精品777| 3d成人动漫网站| 97人人模人人爽人人澡| 狂野欧美xxxx韩国少妇| 欧美一级国产精品| 亚洲日本久久久| 日韩有码一区| 中文字幕在线日韩| 人妻人人澡人人添人人爽| 一本一道久久a久久精品蜜桃| 日韩视频免费大全中文字幕| 无码人中文字幕| 欧美96在线丨欧| 午夜精品福利电影| 日韩电影在线观看一区二区| 免播放器亚洲| 国产精品丝袜久久久久久不卡| 中文字幕二区三区| 国产mv日韩mv欧美| 久久久久久久免费| 色综合久久久久综合一本到桃花网| 中文字幕第一区综合| 中文字幕av日韩精品| 看黄网站在线| 午夜电影一区二区| 在线观看的毛片| 亚洲日本一区二区三区在线| 4438x亚洲最大成人网| 自拍视频第一页| 国产精品亚洲二区| 美女精品久久久| 日本韩国欧美中文字幕| 麻豆精品一二三| 国产视频一区二区不卡| 九九在线视频| 亚洲六月丁香色婷婷综合久久| 国产精品久久久久9999爆乳| 成人爽a毛片免费啪啪动漫| 欧美日韩国产精品| 手机在线国产视频| 久操精品在线| 欧美夫妻性视频| 中文字幕人成人乱码亚洲电影| 极品尤物av久久免费看| 国产私拍一区| 国产高清一区二区三区视频| 亚洲一区二区三区影院| 欧美精品一区二区三区免费播放| 国产成人免费av一区二区午夜 | 91精品黄色| 成人综合影院| 狠狠色狠色综合曰曰| 亚洲天堂网2018| 国产一区不卡| 91chinesevideo永久地址| 国产精品女人久久久| 久久综合色8888| av在线观看地址| 高清精品久久| 色播久久人人爽人人爽人人片视av| 国内偷拍精品视频| 久久99精品国产麻豆不卡| 久久精品人成| 阿v视频在线| 欧美mv和日韩mv的网站| 无码人妻精品中文字幕| 久久精品国产清高在天天线| 91亚洲精品视频| 色多多视频在线观看| 欧美日韩中文字幕日韩欧美| 香蕉视频999| 欧美美女视频| 国产精品老女人视频| 日韩av地址| 欧美日韩中文字幕日韩欧美| 毛毛毛毛毛毛毛片123| 成人av国产| 国产精品久久国产精品99gif| 欧美一区二区三区激情| 亚洲精品国产高清久久伦理二区| 日韩av片网站| 国产日韩三区| 日韩激情电影免费看| 亚洲精品久久久久久下一站| 国产精品99久久久久久成人| 欧美亚洲在线| 日韩妆和欧美的一区二区| 日韩天堂在线| 综合久久五月天| 国产一区二区三区成人| 国产精品麻豆一区二区| 国产视频手机在线播放| 欧洲杯足球赛直播| 成人国产精品av| 超碰个人在线| 精品福利av导航| 西西44rtwww国产精品| 91在线高清观看| 男人操女人免费软件| 亚洲影院天堂中文av色| 欧美重口另类videos人妖| 四虎成人免费在线| 91黄色小视频| 欧美三级黄色大片| 成+人+亚洲+综合天堂| 久久久999免费视频| 亚洲人成网站77777在线观看| 欧美尤物巨大精品爽| 韩国精品视频| 日韩一区二区免费电影| 久久精品国产av一区二区三区| 播五月开心婷婷综合| 2022亚洲天堂| 欧美激情国产在线| 国产精品二区三区四区| 91九色在线看| 永久免费看mv网站入口亚洲| 伊人精品一区二区三区| 一区二区中文字幕在线| 免费在线观看日韩av| 国产视频一区三区| 一区二区三区四区国产| 日韩一区免费| 日本午夜人人精品| а√资源新版在线天堂| 日韩精品中文字幕视频在线| 天堂网av手机版| 国产精品国产a| 男男一级淫片免费播放| 久久亚洲欧洲| 在线成人av电影| 日韩av系列| 91在线观看免费| 桃花岛tv亚洲品质| 欧美劲爆第一页| av免费观看一区二区| 日韩亚洲欧美中文三级| 国产精品视频一区在线观看| 国产清纯白嫩初高生在线观看91 | 日韩特级黄色片| 亚洲欧美日韩在线不卡| 国产精品久久无码| 国产一区二区三区久久悠悠色av| 免费看又黄又无码的网站| 日韩在线观看| 免费国产一区二区| 伊色综合久久之综合久久| 国产精品久久久久久久久久尿| 色yeye免费人成网站在线观看| 亚洲欧美日韩网| 人人妻人人玩人人澡人人爽| 色婷婷综合久久| 五月天婷婷丁香| 亚洲精品免费一二三区| 先锋影音av在线| 久久亚区不卡日本| 污污污www精品国产网站| 久久精品国产99国产| 国产在线青青草| 亚洲国产国产亚洲一二三| 亚洲一区二区三区在线观看视频| 欧美激情极品| 国产成人免费观看| 国产69精品久久久久按摩| 欧美在线视频播放| 97人人爽人人澡人人精品| 久久久精品国产亚洲| aaa在线免费观看| 国产性色av一区二区| 色欲av伊人久久大香线蕉影院| 91麻豆精品国产| 国产精品国产av| 欧美精品久久一区二区三区| 毛片毛片女人毛片毛片| 亚洲高清免费观看| 日本一级淫片免费放| 亚洲一二三四久久| 国产一级二级毛片| 亚洲国产日韩在线一区模特| 亚洲天堂网av在线| 亚洲视频你懂的| 欧美日韩偷拍视频| 亚洲综合视频在线观看| 国产在线观看免费视频软件| 久久品道一品道久久精品| 精品国产av色一区二区深夜久久 | 视频一区二区国产| 日本精品一区二区三区四区 | 欧美激情va永久在线播放| 成人影院在线看| 欧美精品一区三区| 欧美人与动牲性行为| 欧美老肥婆性猛交视频| 中文字幕有码在线观看| 美日韩精品视频免费看| 青草视频在线免费直播| 欧美激情按摩在线| 正在播放日韩精品| 国产精品入口福利| 精品国产乱码久久久久久樱花| 91在线直播亚洲| 国产精品毛片视频| 欧美一区1区三区3区公司| 精品国产91乱码一区二区三区四区| 欧美另类视频在线| 久久亚洲国产| 中文精品无码中文字幕无码专区 | 99久久国产综合精品五月天喷水| 国产精品久久| 妺妺窝人体色www在线小说| 久久最新视频| 日日干日日操日日射| 国产精品996| 亚欧洲乱码视频| 日韩美女啊v在线免费观看| 欧美成人精品一区二区免费看片 | 中文字幕av影院| 精品视频123区在线观看| 国产精品怡红院| 亚洲精品国产精品国自产在线 | 高清一区二区中文字幕| 国产高清在线一区| 免费成人结看片| 午夜久久久久久久久久久| 在线成人h网| 午夜精品在线免费观看| 国内精品久久久久影院薰衣草 | 欧美激情亚洲视频| 户外露出一区二区三区| 亚洲一区二区在线| 自拍自偷一区二区三区| 在线免费观看一区二区三区| 一区二区电影在线观看| 99精品人妻少妇一区二区| 日韩成人一级片| 怡红院一区二区| 中文字幕一区二区三区乱码在线| 国产一二三四在线| 欧美老人xxxx18| 久青草国产在线| 欧美国产日韩xxxxx| 香蕉久久免费电影| 国产欧美日本在线| 中文字幕日韩欧美精品高清在线| 国产97在线 | 亚洲| 国产一区二区三区四区五区入口| 国产熟妇搡bbbb搡bbbb| 亚洲免费观看高清完整| 天堂网一区二区| 亚洲国产精品久久久久| 日本精品在线| 国产精品久久久久久av福利| 国产精品日本一区二区三区在线| 久久久久久久久久久久久9999| 亚洲成人免费| 中文字幕在线综合| 国产亚洲精品资源在线26u| 欧美久久久久久久久久久久| 色成年激情久久综合| 五月婷婷在线播放| 久久免费少妇高潮久久精品99| 深夜日韩欧美| 一区二区三区在线观看www| 久久蜜桃精品| 蜜桃精品成人影片| 婷婷国产v国产偷v亚洲高清| 在线播放国产一区| 亚洲色图综合网| 欧美自拍电影| 免费一区二区三区| 国产精品亚洲产品| 搡老熟女老女人一区二区| 亚洲无人区一区| 丰满人妻熟女aⅴ一区| 欧美老少做受xxxx高潮| 久久久久黄色| 伊甸园精品99久久久久久| 日韩高清电影一区| 欧美波霸videosex极品| 一本一本大道香蕉久在线精品| 人妻一区二区三区| 97久久精品人人澡人人爽缅北| 麻豆国产一区| 日本aa在线观看| 不卡av在线网| 欧美三级午夜理伦| 亚洲人成在线观| 国产精品久久乐| 免费观看中文字幕| 国产成人亚洲综合a∨婷婷图片| 免费中文字幕日韩| 精品国产网站在线观看| aa视频在线观看| 久久综合中文色婷婷| 在线视频精品| 亚洲黄色小说视频| 欧美日韩视频在线第一区| 香蕉视频在线看| 亚洲综合精品一区二区| 午夜性色一区二区三区免费视频| 毛毛毛毛毛毛毛片123| 亚洲夂夂婷婷色拍ww47| 欧美视频xxx| 国产99视频在线观看| 成人免费电影网址| 无套内谢丰满少妇中文字幕| 成人免费在线视频观看| 国产福利资源在线| 91精品国产91久久久久| 综合亚洲自拍| 在线免费看v片| 午夜亚洲国产au精品一区二区| 天天插天天干天天操| 日本免费久久高清视频| 欧美精品羞羞答答| 老司机av网站| 91久久精品网| 午夜羞羞小视频在线观看| 国内一区二区三区在线视频| 日韩视频不卡| 很污很黄的网站| 亚洲精品电影网站| 亚洲欧洲日韩精品在线| 欧美中文字幕在线观看视频| 成人综合婷婷国产精品久久 | 超碰97av在线| 精品国产网站在线观看| 欧美大片高清| 国产人妻互换一区二区| 91视频一区二区三区| 亚洲一区二区天堂| 91av视频在线播放| 91精品啪在线观看国产18|