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

聊聊 Python 應用容器化部署流程

開發 前端
Docker 是目前主流IT公司廣泛接受和使用的,用于構建、管理和保護它們應用程序的工具。容器,例如 Docker 允許開發人員在單個操作系統上隔離和運行多個應用程序,而不是為服務器上的每個應用程序專用一個虛擬機。使用容器更輕量級,可以降低成本、更好地使用資源和發揮更高的性能。

 1. 簡介

Docker 是目前主流IT公司廣泛接受和使用的,用于構建、管理和保護它們應用程序的工具。

[[329558]]

容器,例如 Docker 允許開發人員在單個操作系統上隔離和運行多個應用程序,而不是為服務器上的每個應用程序專用一個虛擬機。使用容器更輕量級,可以降低成本、更好地使用資源和發揮更高的性能。

本文將使用 Flask 開發一個簡單的 Python web 應用程序,并為 “容器化” 做好準備。然后創建一個 Docker 映像,并將其部署到測試和生產環境中。

注意: 請確保機器上已安裝 Docker,如果沒有請參考 Docker 官方安裝教程。

2. Docker介紹

Docker 是一種工具,它使開發人員能夠交付他們的應用程序(以及庫或其他依賴項),確保他們可以使用正確的配置運行,而不受部署環境影響。

這是通過將應用程序隔離在單獨的容器中來實現的,這些應用程序雖然被容器分隔開,但是卻可以共享操作系統和其他資源。

Docker 包含兩部分:

  • Docker Engine — 應用打包工具,用于封裝應用程序。
  • Docker Hub — 用于管理云上容器應用程序的工具。

3.為何選擇容器

了解容器的重要性和實用性非常重要,雖然它和直接將應用部署到服務器沒有多大區別,但是當涉及到比較復雜的且相當吃資源的應用,尤其是多個應用部署在同一臺服務器,或是同一應用要部署到多臺服務器時。容器就變得非常有用。

在容器之前,這是通過 VMWare 和 Hypervisor 等虛擬機解決的,但是它們在效率、速度和可移植性方面已被證明并不是最佳選擇。

Docker 容器是虛擬機的輕量級的替代品-與 VM 不同,我們不需要為它預先分配 RAM、CPU 或其他資源,也不需要為每個應用程序啟動一個 VM,僅僅只需要一個操作系統即可。

使用容器開發人員就不需要為不同環境制定特殊版本,這樣可以專注于應用程序的核心業務邏輯。

4.創建 Python 應用

Flask 是 Python 的一個輕量級 Web 應用框架,簡單易用,可以很快速地創建 web 應用。我們用它來創建此 demo 應用。

如果還沒有安裝 Flask 模塊,可以使用下面命令安裝:

  1. $ pip install flask 

安裝成功后,新建一個應用目錄,命名為 FlaskDemo。并在該目錄下創建應用代碼文件app.py。

在 app.py 中,首先引入 Flask 模塊,然后創建一個 web 應用:

  1. from flask import Flask 
  2.  
  3. app = Flask(__name__) 

然后定義路由/和其對應的請求處理程序:

  1. @app.route("/"
  2. def index():   
  3.   return ""
  4.   <h1>Python Flask in Docker!</h1> 
  5.   <p>A sample web-app for running Flask inside Docker.</p> 
  6.   ""

最后,添加運行主程序并啟動該腳本:

  1. if __name__ == "__main__"
  2.     app.run(debug=True, host='0.0.0.0'
  1. $ python app.py 

然后在瀏覽器中訪問 http://localhost:5000/,可以看到 Dockerzing Python app using Flask這樣的頁面。

5.Dokcer打包應用

要在 Docker 上運行應用程序,首先必須構建一個容器,而且必須包含使用的所有依賴項——在我們的例子中只有Flask。因此,新建一個包含所有依賴包的 requirements.txt 文件,然后創建一個 Dockerfile,該文件用來描述構建映像過程。

此外,當啟動容器時還需要放開應用程序的HTTP端口。

準備工作

requirements.txt 文件非常簡單,只需要填入項目的依賴包和其對應版本即可:

  1. Flask==1.0.2  

接下來,需要將應用程序運行所需的所有Python文件都放在頂層文件夾中,例如,名為app的目錄。

同時建議將主入口程序命名為 app.py ,將腳本中創建的Flask對象命名為 app 是一種通常的做法,這樣也可以簡化部署。

  1. FlaskApp 
  2.     ├── requirements.txt 
  3.     ├── Dockerfile 
  4.     └── app 
  5.         └── app.py 
  6.         └── <other .py files> 

創建Dockerfile

Dockerfile 本質上是一個文本文件,其中明確定義了如何為我們的項目構建 Docker 鏡像。

接下來創建一個基于 Ubuntu 16.04 和 Python 3.X 的 Dokcer 鏡像:

  1. FROM ubuntu:16.04 
  2.  
  3. MAINTAINER jhao104 "j_hao104@163.com" 
  4.  
  5. RUN apt-get update -y && \ 
  6.     apt-get install -y python3-pip python3-dev 
  7.  
  8. COPY ./requirements.txt /requirements.txt 
  9.  
  10. WORKDIR / 
  11.  
  12. RUN pip3 install -r requirements.txt 
  13.  
  14. COPY . / 
  15.  
  16. ENTRYPOINT [ "python3" ] 
  17.  
  18. CMD [ "app/app.py" ] 

Dockerfile 的基本指令有十三個,上面用到了部分;

  • FROM - 所有Dockerfile的第一個指令都必須是 FROM ,用于指定一個構建鏡像的基礎源鏡像,如果本地沒有就會從公共庫中拉取,沒有指定鏡像的標簽會使用默認的latest標簽,如果需要在一個Dockerfile中構建多個鏡像,可以使用多次。
  • MAINTAINER - 描述鏡像的創建者,名稱和郵箱。
  • RUN - RUN命令是一個常用的命令,執行完成之后會成為一個新的鏡像,通常用于運行安裝任務從而向映像中添加額外的內容。在這里,我們需更新包,安裝 python3 和 pip 。在第二個 RUN 命令中使用 pip 來安裝 requirements.txt 文件中的所有包。
  • COPY - 復制本機文件或目錄,添加到指定的容器目錄, 本例中將 requirements.txt 復制到鏡像中。
  • WORKDIR - 為RUN、CMD、ENTRYPOINT指令配置工作目錄。可以使用多個WORKDIR指令,后續參數如果是相對路徑,則會基于之前命令指定的路徑。
  • ENTRYPOINT - 在啟動容器的時候提供一個默認的命令項。
  • RUN - 運行 app 目錄中的 app.py 。

Docker鏡像構建原理

Docker鏡像是使用 Docker build 命令構建的。在構建鏡像時,Docker創建了所謂的“層(layers)”。每一層都記錄了Dockerfile中的命令所導致的更改,以及運行命令后鏡像的狀態。

Docker在內部緩存這些層,這樣在重新構建鏡像時只需要重新創建已更改的層。例如,這里使用了 ubuntu:16.04 的基礎鏡像,相同容器的所有后續構建都可以重用它,因為它不會改變。但是,因為項目修改,在下次重新構建過程中 app 目錄的內容可能會有所不同,因此只會重新構建這一層。

需要注意的是,每當重新構建某一層時,Dockerfile 中緊隨其后的所有層也都需要重新構建。例如,我們首先復制 requirements.txt 文件,然后再復制應用程序的其余部分。這樣之前安裝的依賴項只要沒有新的依賴關系,即使應用程序中的其他文件發生了更改,也不需要重新構建這一層。這一點在創建 Dockerfiles 時一定要注意。

因此,通過將 pip 安裝與應用程序其余部分的部署分離,可以優化容器的構建過程。

構建Docker鏡像

現在 Dockerfile 已經準備好了,而且也了解了Docker的構建過程,接下來為我們的應用程序創建Docker映像:

  1. docker build -t docker-flask:0.1 . 

調試模式運行

根據前面講到的容器化的優點,開發的應用程序通過容器部署,這從一開始就確保了應用程序構建的環境是干凈的,從而消除了交付過程中的意外情況。

但是呢,在開發應用程序的過程中,更重要的是要快速重新構建和測試,以檢查驗證過程中的每個中間步驟。為此,web應用程序的開發人員需要依賴于Flask等框架提供的自動重啟功能(Debug模式下,修改代碼自動重啟)。而這一功能也可以在容器中使用。

為了啟用自動重啟,在啟動Docker容器時將主機中的開發目錄映射到容器中的app目錄。這樣Flask就可以監聽主機中的文件變化(通過映射)來發現代碼更改,并在檢測到更改時自動重啟應用程序。

此外,還需要將應用程序的端口從容器轉發到主機。這是為了能夠讓主機上的瀏覽器訪問應用程序。

因此,啟動Dokcer容器時需要使用 volume-mapping 和 port-forwarding 選項:

  1. docker run --name flask_app -v $PWD/app:/app -p 5000:5000 docker-flask:0.1 

改命令將會執行以下操作:

  • 基于之前構建的 docker-flask 鏡像啟動一個容器;
  • 這個容器的名稱被設置為 flask_app 。如果沒有 ——name 選項,Docker將為容器生成一個名稱。顯式指定名稱可以幫助我們定位容器(用來停止等操作);
  • -v 選項將主機的app目錄掛載到容器;
  • -p 選項將容器的端口映射到主機。

現在可以通過http://localhost:5000 或者 http://0.0.0.0:5000/ 訪問到應用:

如果我們在容器運行的時候,修改應用程序代碼,Flask會檢測到更改并重新啟動應用程序。


要停止容器的話,可以使用 Ctrl + C, 并運行 docker rm flask_app 移除容器。

生產模式運行

雖然直接使用Flask裸跑運行應用程序對于開發來說已經足夠好了,但是我們需要在生產中使用更健壯的部署方法。

目前主流的部署方案是 nginx + uwsgi,下面我們將介紹如何為生產環境部署web應用程序。Nginx是一個開源web服務器,uWSGI是一個快速、自我修復、開發人員和系統管理員友好的服務器。

首先,我們創建一個入口腳本,用來控制以開發模式還是生產模式啟動我們的應用程序,這兩者區別是選擇直接運行python還是nginx模式。

然后再寫一個簡單shell啟動腳本 entry-point.sh:

  1. #!/bin/bash 
  2.  
  3. if [ ! -f /debug0 ]; then 
  4.   touch /debug0 
  5.  
  6.   while getopts 'hd:' flag; do 
  7.     case "${flag}" in 
  8.       h) 
  9.         echo "options:" 
  10.         echo "-h        show brief help" 
  11.         echo "-d        debug mode, no nginx or uwsgi, direct start with 'python3 app/app.py'" 
  12.         exit 0 
  13.         ;; 
  14.       d) 
  15.         touch /debug1 
  16.         ;; 
  17.       *) 
  18.         break 
  19.         ;; 
  20.     esac 
  21.   done 
  22. fi 
  23.  
  24. if [ -e /debug1 ]; then 
  25.   echo "Running app in debug mode!" 
  26.   python3 app/app.py 
  27. else 
  28.   echo "Running app in production mode!" 
  29.   nginx && uwsgi --ini /app.ini 
  30. fi 

然后創建uWSGI配置文件 app.ini:

  1. [uwsgi] 
  2. plugins = /usr/lib/uwsgi/plugins/python3 
  3. chdir = /app 
  4. module = app:app 
  5. uid = nginx 
  6. gid = nginx 
  7. socket = /run/uwsgiApp.sock 
  8. pidfile = /run/.pid 
  9. processes = 4   
  10. threads = 2 

和nginx配置文件 nginx.conf:

  1. user nginx; 
  2. worker_processes  4; 
  3. pid /run/nginx.pid; 
  4.  
  5. events { 
  6.     worker_connections  20000; 
  7.  
  8. http { 
  9.     include    mime.types; 
  10.     sendfile on
  11.     keepalive_timeout  65; 
  12.     gzip off
  13.  
  14.     server { 
  15.         listen 80; 
  16.         access_log off
  17.         error_log off
  18.  
  19.         location / { try_files $uri @flaskApp; } 
  20.         location @flaskApp { 
  21.             include uwsgi_params; 
  22.             uwsgi_pass unix:/run/uwsgiApp.sock; 
  23.         } 
  24.     } 

最后,修改Dockerfile 將nginx和uWSGI安裝到鏡像,將配置文件復制到鏡像中,并設置運行nginx所需的用戶權限:

  1. FROM ubuntu:16.04 
  2.  
  3. MAINTAINER jhao104 "j_hao104@163.com" 
  4.  
  5. RUN apt-get update -y && \ 
  6.     apt-get install -y python3-pip python3-dev && \ 
  7.     apt-get install -y nginx uwsgi uwsgi-plugin-python3 
  8.  
  9. COPY ./requirements.txt /requirements.txt 
  10. COPY ./nginx.conf /etc/nginx/nginx.conf 
  11.  
  12. WORKDIR / 
  13.  
  14. RUN pip3 install -r requirements.txt 
  15.  
  16. COPY . / 
  17.  
  18. RUN adduser --disabled-password --gecos '' nginx\ 
  19.   && chown -R nginx:nginx /app \ 
  20.   && chmod 777 /run/ -R \ 
  21.   && chmod 777 /root/ -R 
  22.  
  23. ENTRYPOINT [ "/bin/bash""/entry-point.sh"

然后重新打包鏡像:

  1. docker build -t docker-flask:0.1 . 

然后使用nginx啟動應用程序:

  1. docker run -d --name flaskapp --restart=always -p 8091:80 docker-flask:0.1 

該鏡像包含python、ngix、uwsgi完整環境,只需要在部署時指定端口映射便可以自動部署應用。要停止并刪除此容器,請運行下面命令:

  1. docker stop flaskapp && docker rm flaskapp 

此外,如果我們仍然需要上面調試功能或修改部分代碼,也可以像上面一樣以調試模式運行容器:

  1. docker run -it --name flaskapp -p 5000:5000 -v $PWD/app:/app docker-flask:0.1 -d debug 

6.管理外部依賴

如果將應用程序作為容器交付時,需要記住的一個關鍵事項是,開發人員管理依賴項的責任增加了。除了識別和指定正確的依賴項和版本之外,還需要負責在容器環境中安裝和設置這些依賴項。

在Python項目中管理安裝依賴比較容易,可以使用requirements.txt指定依賴項和對應版本,然后通過 pip 安裝。

需要重申的是是,無論何時修改 requirements.txt 文件,都需要重新構建Docker鏡像。

啟動時安裝依賴項

可能在某次版本更新時需要安裝額外的依賴項。比如,在開發過程中使用了一個新的包。如果不希望每次都重新構建Docker鏡像,或者希望在啟動時使用最新的可用版本。可以通過修改啟動程序在應用程序啟動時運行安裝程序來實現這一點。

同樣,我們也可以安裝額外的系統級包依賴項。修改 entry-point.sh:

  1. #!/bin/bash 
  2.  
  3. if [ ! -f debug0 ]; then 
  4.   touch debug0 
  5.    
  6.   if [ -e requirements_os.txt ]; then 
  7.     apt-get install -y $(cat requirements_os.txt) 
  8.      
  9.    fi 
  10.    if [-e requirements.txt ]; then 
  11.     pip3 install -r requirements.txt 
  12.    fi 
  13.  
  14.   while getopts 'hd:' flag; do 
  15.     case "${flag}" in 
  16.       h) 
  17.         echo "options:" 
  18.         echo "-h        show brief help" 
  19.         echo "-d        debug mode, no nginx or uwsgi, direct start with 'python3 app/app.py'" 
  20.         exit 0 
  21.         ;; 
  22.       d) 
  23.         touch debug1 
  24.         ;; 
  25.       *) 
  26.         break 
  27.         ;; 
  28.     esac 
  29.   done 
  30. fi 
  31.  
  32. if [ -e debug1 ]; then 
  33.   echo "Running app in debug mode!" 
  34.   python3 app/app.py 
  35. else 
  36.   echo "Running app in production mode!" 
  37.   nginx && uwsgi --ini /app.ini 
  38. fi 

這樣我們可以在 requirements_os.txt 中指定將要安裝的系統軟件包名稱,這些包名以空格分隔放在同一行。他們將和 requirements.txt 中的Python依賴庫一樣在應用程序啟動之前安裝。

盡管這樣對應用的迭代開發期間提供了便利,但是出于幾個原因,在啟動時安裝依賴項不是一個好的實踐:

  • 它破壞了容器化的目標之一,即修復和測試由于部署環境的變化而不會改變的依賴關系;
  • 增加了應用程序啟動的額外開銷,這將增加容器的啟動時間;
  • 每次啟動應用程序時需要安裝依賴項,這樣對網絡資源有要求。

 

責任編輯:華軒 來源: AirPython
相關推薦

2023-04-28 08:43:46

2024-05-09 09:55:08

2021-03-16 12:08:32

Python 服務器腳本

2022-01-05 00:03:32

場景容器Airflow

2019-01-09 13:20:28

GPU虛擬化應用

2023-08-25 15:41:50

容器微服務

2023-08-23 15:18:06

云計算容器

2022-01-26 08:47:17

部署應用分布式

2023-04-06 07:09:25

自動化部署Actions

2021-06-26 07:40:45

Greenplum集群部署

2020-07-14 07:27:48

容器IoCSpring

2024-08-05 11:14:45

2023-08-21 15:28:36

云原生Kubernetes

2023-08-29 15:17:40

Docker容器架構

2025-09-29 04:55:00

SpringBootARDocker

2023-05-03 23:48:24

Spring容器初始化

2023-03-27 08:49:51

2023-07-03 09:59:00

并發編程并發容器

2022-03-04 08:45:11

Docker開源Linux

2023-11-28 07:55:05

Calico容器網絡
點贊
收藏

51CTO技術棧公眾號

国产一区二区三区久久久久久久久| 日韩在线你懂得| 成人av在线影院| 26uuu另类亚洲欧美日本一| 亚洲天堂网一区二区| 97欧美成人| 亚洲激情五月婷婷| 欧美精品七区| 国产精品国产精品国产专区| 最新国产乱人伦偷精品免费网站| 在线电影中文日韩| 国产吃瓜黑料一区二区| 我爱我色成人网| 亚洲精品国产视频| 日韩.欧美.亚洲| 成人av手机在线| 日韩va欧美va亚洲va久久| 欧美精品做受xxx性少妇| 大又大又粗又硬又爽少妇毛片| 99热这里有精品| 福利视频第一区| 妞干网这里只有精品| 免费成人av电影| 国产尤物一区二区| 国产精品国产三级国产aⅴ9色| 妺妺窝人体色www在线下载| 欧美日韩一二| 日韩av中文字幕在线| 亚欧美一区二区三区| 黄色成人在线视频| 精品福利在线视频| 日本精品福利视频| 伊人在线视频| 欧美经典一区二区| 久久天天狠狠| 四虎免费在线观看| 大尺度一区二区| 91免费国产网站| 亚洲大尺度在线观看| 亚洲经典在线看| 欧美精品亚州精品| 小向美奈子av| 久久精品国产68国产精品亚洲| 亚洲男子天堂网| 久久人人爽人人人人片| jizz国产精品| 日韩欧美国产午夜精品| 在线免费看污网站| 欧美特黄色片| 欧美日韩高清影院| 91插插插插插插插插| 亚洲精品国产嫩草在线观看| 色综合久久久久久久久| 爱福利视频一区二区| 国产美女精品写真福利视频| 午夜影院在线观看欧美| 欧美又粗又长又爽做受| 欧美videosex性欧美黑吊| 亚洲精品欧美激情| 日韩欧美视频免费在线观看| av黄色在线| 亚洲乱码中文字幕综合| www国产无套内射com| 在线不卡日本v二区707| 一区二区三区日本| 久久亚洲国产成人精品无码区| 男女在线观看视频| 亚洲成在人线免费| www一区二区www免费| 丝袜诱惑一区二区| 在线视频你懂得一区| 一区二区三区 欧美| 日本成人在线网站| 欧美一区二区三区四区高清| 潘金莲一级淫片aaaaa| silk一区二区三区精品视频| 亚洲精品国产精品国自产在线 | 日韩欧美一区在线观看| 被黑人猛躁10次高潮视频| 亚洲日本va| 精品呦交小u女在线| 国产又黄又粗视频| 中文字幕一区二区三三| 午夜精品久久久久久久久久久久 | 很黄很黄激情成人| 91精品国产免费久久久久久| 波多野结衣午夜| 国模一区二区三区白浆| 国产精品免费一区二区三区四区 | 中文字幕综合一区| 人妻人人澡人人添人人爽| 黄色成人av网站| 青青草99啪国产免费| 在线播放精品视频| 粉嫩一区二区三区在线看| 欧美精品一区三区在线观看| 日本最黄一级片免费在线| 夜夜爽夜夜爽精品视频| 日日碰狠狠丁香久燥| 欧美经典一区| 亚洲女同性videos| 好吊日在线视频| 亚洲永久网站| 亚洲精品免费一区二区三区| 深夜影院在线观看| 亚洲精品国产高清久久伦理二区| 欧美污视频网站| 日韩一区二区三区色| 亚洲图片制服诱惑| 久久综合久久鬼| 麻豆中文一区二区| 久久久精品国产一区二区三区| 麻豆免费在线观看| 色视频成人在线观看免| 韩国三级在线看| 久久精品国产亚洲夜色av网站| 91高清在线免费观看| 99久久精品免费看国产交换| 国产日韩欧美综合在线| 国产高清www| 国产精品亚洲综合在线观看| 亚洲最大在线视频| 久久久久久少妇| 国产精品99久久久久久似苏梦涵| 色就是色欧美| 伊人久久综合一区二区| 精品对白一区国产伦| 999精品在线视频| 视频一区二区三区中文字幕| 精品高清视频| 国产偷倩在线播放| 在线电影一区二区三区| 免费黄色在线网址| 日韩一区精品字幕| 麻豆传媒一区| 亚洲黄色免费看| 亚洲国产91色在线| 国产亚洲精品久久777777| 国产呦萝稀缺另类资源| 亚洲精品乱码久久久久久蜜桃91| 欧美电影免费观看| 精品亚洲精品福利线在观看| 日韩免费av片| 国产不卡一区视频| 97中文字幕在线| 999久久久久久久久6666| 欧美日韩电影在线观看| 午夜久久久久久久久久| 一区二区三区在线视频播放| 欧美污在线观看| 欧美日本一区二区视频在线观看 | 国产精品免费丝袜| 8x8x最新地址| 久久性感美女视频| 国产欧美一区二区三区久久| 求av网址在线观看| 91精品免费观看| 侵犯稚嫩小箩莉h文系列小说| 国内精品久久久久影院色| 丰满人妻一区二区三区53号| 一区二区三区国产好| 欧美激情精品久久久| 欧美一级淫片免费视频魅影视频| 亚洲成av人片在线观看| 国产国语性生话播放| 老牛影视一区二区三区| 五月天亚洲综合| 高清久久精品| 久久免费精品日本久久中文字幕| 天天躁日日躁狠狠躁喷水| 懂色av影视一区二区三区| 青娱乐精品在线| 日韩视频一区| 日本在线观看不卡| 欧美日韩破处视频| 欧美国产日韩一区| 五月婷婷开心中文字幕| 在线视频你懂得一区| 免费在线观看a级片| 国产成人精品三级| 国产午夜伦鲁鲁| 日韩欧美中字| 96久久精品| 日本在线影院| 日韩在线视频免费观看| 粉嫩av一区二区夜夜嗨| 色欧美日韩亚洲| 色欲一区二区三区精品a片| 福利一区二区在线观看| 成人在线观看你懂的| 久久91麻豆精品一区| 国产精品中文字幕在线观看| 日本三级在线观看网站| 亚洲桃花岛网站| 国产污视频网站| 亚洲日本电影在线| 久久精品aⅴ无码中文字字幕重口| 国产婷婷精品| 欧美精品二区三区四区免费看视频 | 日日狠狠久久偷偷综合色| 日韩av免费在线看| 宅男在线观看免费高清网站| 亚洲天堂免费在线| 在线观看中文字幕网站| 一区二区三区中文在线观看| 亚洲午夜精品久久久久久高潮| 国产不卡视频在线观看| 国产九九在线观看| 一区二区激情| 天天做天天躁天天躁| 日韩免费久久| 另类小说综合网| 午夜免费欧美电影| 国产精品人人做人人爽| 久久久男人天堂| 欧美成人精品三级在线观看| 国产私拍精品| 日韩电影中文 亚洲精品乱码| 国产精品福利电影| 91久久香蕉国产日韩欧美9色| 黄色小视频在线免费看| 亚洲欧美偷拍另类a∨色屁股| 久久久久无码精品国产sm果冻| 96av麻豆蜜桃一区二区| 中文在线字幕观看| 久草中文综合在线| av无码精品一区二区三区| 夜夜嗨av一区二区三区网站四季av| 久久99国产精品一区| 久久五月天小说| 亚洲精品tv久久久久久久久| 国产精品三级| 欧美国产二区| 亚洲精品国模| 久久涩涩网站| 九九免费精品视频在线观看| 精品国产一区二区三区麻豆小说 | 日韩成人av影视| 日韩有码免费视频| 性娇小13――14欧美| 国产3p露脸普通话对白| 亚洲日韩视频| 成人午夜免费在线| 亚洲美女黄网| 日韩少妇内射免费播放18禁裸乳| 亚洲人成久久| 久久成人免费观看| 夜夜嗨网站十八久久| 丰满爆乳一区二区三区| 亚洲一区成人| 亚洲人成色77777| 日本一不卡视频| av污在线观看| 激情文学综合插| 三级网站免费看| 国产69精品久久99不卡| 天天躁日日躁狠狠躁av| www.亚洲激情.com| 亚洲国产欧美视频| 久久精品一区二区三区四区| 在线观看免费小视频| 国产精品白丝在线| 91麻豆免费视频网站| 亚洲在线观看免费视频| 国产精品第9页| 日本精品一级二级| 一级特黄aaa| 精品免费视频一区二区| 午夜在线观看视频18| 亚洲天堂男人天堂| 欧美一区二区三区在线观看免费| 欧美成年人视频网站| 成人福利影视| 国产精品96久久久久久| 日韩一区二区三免费高清在线观看| 亚洲影院高清在线| 国产乱论精品| 无码免费一区二区三区免费播放 | 久久中文资源| 色婷婷精品国产一区二区三区| 天天综合一区| 人妻夜夜添夜夜无码av| 日韩精品午夜视频| 久久久精品视频国产| av激情亚洲男人天堂| 国产黄色录像视频| 亚洲国产综合91精品麻豆| 国产视频1区2区| 91精品国产高清一区二区三区| 可以免费看毛片的网站| 亚洲日本中文字幕免费在线不卡| 黄色免费在线观看| 69精品小视频| 高清久久精品| 日韩成人在线资源| 欧美日韩亚洲一区在线观看| 大香煮伊手机一区| 高清不卡一区二区| 午夜激情福利电影| 精品福利樱桃av导航| 97人妻人人澡人人爽人人精品 | 国产一区视频在线观看免费| 无码无遮挡又大又爽又黄的视频| 国产另类ts人妖一区二区| 青青草福利视频| 亚洲一区二区视频在线观看| 中文字幕在线观看你懂的| 亚洲第一区在线观看| 麻豆系列在线观看| 国产精品夫妻激情| 精品成人自拍视频| 妞干网这里只有精品| 男女男精品视频| 亚洲欧美在线不卡| 一区二区三区波多野结衣在线观看 | 欧美日韩性视频在线| 国产成a人亚洲精v品无码| 国产一区二区三区在线观看视频| 96av在线| 国产成人成网站在线播放青青| 999久久久91| 久久婷婷国产91天堂综合精品| 99久久国产综合精品色伊| 黄色一级片在线免费观看| 欧美日韩一级片在线观看| 九色在线观看| 91精品国产自产91精品| 波多野结衣欧美| 四虎4hu永久免费入口| 精品综合久久久久久8888| 亚洲一二三精品| 色老汉一区二区三区| 亚洲日本在线播放| 久久免费高清视频| 99re6热只有精品免费观看| 无码毛片aaa在线| 国产综合久久久久久鬼色| 99久久99久久精品免费| 色综合久久综合网| 日本一级在线观看| 欧美一级片免费在线| 欧美黄色网视频| 国产av天堂无码一区二区三区| 成人性视频免费网站| 国产亚洲精品久久久久久无几年桃| 91精品国产免费| av网站大全在线| 91精品网站| 韩日在线一区| 亚洲欧美在线不卡| 一本色道综合亚洲| 成人在线观看一区| 国产精品久久久久久五月尺| 大片网站久久| 亚洲精品20p| 亚洲男同1069视频| 性中国xxx极品hd| 久久久久久国产精品久久| 久久久久观看| 黑森林福利视频导航| 国产日本一区二区| 中文字幕一区二区在线视频 | av中文字幕在线看| 久久99久久99精品蜜柚传媒| 性欧美videos另类喷潮| 超碰人人人人人人人| 欧美一区二区三区四区视频| av影片在线| 日本不卡二区| 精品写真视频在线观看| 18精品爽视频在线观看| 日韩精品免费在线视频| 日本欧美韩国| 艳母动漫在线观看| 成人不卡免费av| 波多野结衣电车痴汉| 超薄丝袜一区二区| 91精品短视频| 免费在线观看的毛片| 亚洲欧美偷拍卡通变态| 亚洲 国产 欧美 日韩| 国产精品久久久久久久久| 无码一区二区三区视频| 中国特级黄色大片| 欧美色中文字幕| 欧美大片黄色| 亚洲精品电影在线一区| 成人永久aaa| 少妇无套内谢久久久久| 欧美黄色性视频| 精品久久影院| 99riav国产精品视频| 欧美亚洲国产一区二区三区| 深夜国产在线播放| 日本精品一区二区三区高清 久久| 国产精品综合在线视频| 成人免费视频国产免费| 欧美激情aaaa| 色小子综合网| 国产精品探花一区二区在线观看|