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

誰說前端不用懂,手摸手 Docker 從入門到實踐

開發 前端
在下最近遇到要在服務器上安裝 Mysql、Nginx、EasyMock 等工具的場景,這里記錄一下我使用 Docker 安裝的過程,希望也能在類似的場景中幫助到大家~

 

[[343354]]

本文轉載自微信公眾號「前端下午茶」,作者SHERlocked93。轉載本文請聯系前端下午茶公眾號。  

 在下最近遇到要在服務器上安裝 Mysql、Nginx、EasyMock 等工具的場景,這里記錄一下我使用 Docker 安裝的過程,希望也能在類似的場景中幫助到大家~

  • CentOS 版本:7.6
  • Nginx 版本:1.16.1
  • Docker 版本:19.03.12

你多學一樣本事,就少說一句求人的話

1. 介紹

1.1 出現的原因

前后端開發到測試到生產的過程中,經常會遇到一個問題,明明我在本地跑沒問題,為什么到測試環境或者生產環境就報錯了了呢,常常這是因為開發、測試、生產的環境與配置不同導致的。

折騰過環境配置的人都明白其中麻煩,換一臺系統、虛擬機、機器,就又要重來一次,費力費時。由于環境和配置的原因,各種奇奇怪怪因為環境和配置的 Bug,總是像打地鼠游戲里面的地鼠一樣不斷冒出來 ??

[[343355]]

Docker

Docker 對這個問題給出了一個很好的解決方案,通過鏡像將除了系統之外所需要的系統環境由下而上打包,達到服務跨平臺的無縫運作。也就是說,安裝的時候,把特定的環境一模一樣地搬過來,從而解決「在我的電腦上能跑,在 xx 環境就跑不了」的情況。

另外一個重要的原因,就是輕量,基于容器的虛擬化,Docker 的鏡像僅包含業務運行所需的 runtime 環境,一個 CentOS/Ubuntu 基礎鏡像僅 170M,因為輕量一個宿主機可以輕松安裝數百個容器。

1.2 是什么

Docker 是基于 Go 語言實現的云開源項目,從 2013 年發布到現在一直廣受關注。Docker 可以讓你像使用集裝箱一樣快速的組合成應用,并且可以像運輸標準集裝箱一樣,盡可能的屏蔽代碼層面的差異。它將應用程序與該程序的依賴,打包在一個文件里面。運行這個文件,就會生成一個虛擬容器。

程序在這個虛擬容器里運行,就好像在真實的物理機上運行一樣。有了 Docker,就不用擔心環境問題。

本文就不對比虛擬機跟 Docker 的區別和優劣了,每個文章都有,說爛了,想了解的話可以百度一下 ??,我這里就不多說了,下面直接看看怎么安裝怎么用起來吧。

2. 安裝 & 配置

2.1 Mac 下安裝

在下直接使用 Homebrew Cask 來安裝,Mac 下:

  1. # Homebrew 安裝 
  2. $ braw cask install docke 

即可,安裝完輸入命令,直接報錯!

  1. ➜  ~ docke 
  2. zsh: command not found: docker  # 報錯 

遇到這個報錯別擔心,安裝完之后要在應用列表里面雙擊 Docker 應用,輸入密碼之后就可以使用這個命令了 ??。

2.2 CentOS 下安裝

Docker 要求 CentOS 版本必須在 6.5 及以上才可以安裝。

  1. # 安裝 
  2. $ sudo yum install yum-utils device-mapper-persistent-data lvm2 
  3. $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 
  4. $ sudo yum install docker-ce 
  5.  
  6. # 開啟 Docke 
  7. $ sudo systemctl start docke 

在 Windows 上可以直接下載安裝包來安裝,或者 Mac 上不使用 Homebrew 也可以去官網直接下載安裝包來安裝,百度一下到處都是安裝方法,其他的就不用多說。

3. 簡單配置并跑起來

3.1 配置鏡像加速

在 MacOS 的 Docker 配置 Perferences -> Docker Engine 或者 Windows 的 Settings -> Deamon 中的 JSON 中增加一項 registry-mirrors 如下

Docker鏡像加速配置

配置完之后在命令行中 docker info 就可以查看到我們配置的鏡像加速地址了。

  1. ➜  ~ sudo docker info 
  2. ... 
  3.  Registry Mirrors: 
  4.   https://reg-mirror.qiniu.com/ 
  5.   http://hub-mirror.c.163.com/ 
  6.   https://registry.docker-cn.com/ 
  7. ... 

如果你的系統的 Docker 沒有客戶端,比如 CentOS 中,可以直接修改 deamon 配置文件:

  1. # 修改/創建 docker 的 deamon 配置文件 
  2. $ sudo vi /etc/docker/daemon.json 
  3.  
  4. # 修改為如下配置 
  5.   "experimental"false
  6.   "debug"true
  7.   "registry-mirrors": [ 
  8.     "https://reg-mirror.qiniu.com"
  9.     "http://hub-mirror.c.163.com"
  10.     "https://registry.docker-cn.com" 
  11.   ] 
  12.  
  13. # 修改完 :wq 重啟 
  14. $ sudo systemctl restart docke 

3.2 Hello World !

然后就可以快樂跑起來我們第一個 Docker 指令 Hello World 了

Docker跑起Helloworld

Good start !

4. 鏡像 & 容器 & 倉庫

鏡像和容器的關系就像類和類的實例,一個鏡像可以同時跑多個容器,單個容器實例又可以創建新的鏡像。如下圖:

鏡像容器倉庫

下面解釋一下這個圖里面出現的元素

概念 說明
Docker 鏡像 Images 用于創建 Docker 容器的只讀模板,比如 Ubuntu 16.04系統、Nginx 1.16.0 等,是一個特殊的文件系統,包括容器運行時需要的程序、庫、資源、參數等,但不包含任何動態數據,內容在構建后也不會被改變,一個鏡像可以創建多個容器
Docker 容器 Container 容器是獨立運行、相互隔離的一個或一組應用,是鏡像創建的運行實例,實質是進程,可以看作為一個簡易版的 Linux 環境 + 運行在其中的應用程序
Docker 客戶端 Client 客戶端通過命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 與 Docker 的守護進程通信
Docker 主機 Host 一個物理或者虛擬的機器用于執行 Docker 守護進程和容器
Docker 倉庫 Repository 集中存放鏡像文件的地方,分為公有倉庫和私有倉庫。
Docker 注冊服務器 Registry 是一個集中存儲、分發鏡像的服務,官方的叫 Docker Hub。一個 Docker Registry 中可包含多個倉庫,每個倉庫可以包含多個標簽 Tag 的鏡像,不同的標簽對應不同的版本
Docker Machine Docker Machine 是一個簡化 Docker 安裝的命令行工具,通過一個簡單的命令行即可在相應的平臺上安裝Docker,比如 VirtualBox、 Digital Ocean、Microsoft Azure

容器的生命周期圖示

容器的生命周期

容器的五個核心狀態,也就是圖中色塊表示的:Created、Running、Paused、Stopped、Deleted:

  1. Created:容器已經被創建,容器所需的相關資源已經準備就緒,但容器中的程序還未處于運行狀態。
  2. Running:容器正在運行,也就是容器中的應用正在運行。
  3. Paused:容器已暫停,表示容器中的所有程序都處于暫停 ( 不是停止 ) 狀態。
  4. Stopped:容器處于停止狀態,占用的資源和沙盒環境都依然存在,只是容器中的應用程序均已停止。
  5. Deleted:容器已刪除,相關占用的資源及存儲在 Docker 中的管理信息也都已釋放和移除。

本文主要關注于使用,就不太贅述這些狀態的切換等,下面直接上手。

5. 基本使用

5.1 操作命令

  1. # 開啟 Docker 開機自啟動 
  2. $ sudo systemctl enable docke 
  3.  
  4. # 關閉 Docker 開機自啟動 
  5. $ sudo systemctl disable docke 

5.2 鏡像命令

  1. # 去下載鏡像,先從本地找,沒有去鏡像,最后沒有去 hub,標簽不寫默認為 lastest 
  2. $ docker pull [鏡像名]:[標簽Tag] 
  3.  
  4. # 列出本機的所有 image 文件,-a 顯示本地所有鏡像(包括中間鏡像),-q 只顯示鏡像ID,--digests 顯示鏡像的摘要信息 
  5. $ docker image ls 
  6. $ docker images 
  7.  
  8. # 刪除 image 文件, -f 強制刪除鏡像 
  9. $ docker rmi [鏡像名][:標簽Tag] 
  10. $ docker rmi [鏡像名1][:標簽Tag] [鏡像名2][:標簽Tag]    # 刪多個 
  11. $ docker rmi $(docker ps -a -q)    # 刪全部,后面是子命令 
  12.  
  13. # 查詢鏡像名稱,--no-trunc 顯示完整的鏡像描述,--filter=stars=30 列出star不少于指定值的鏡像,--filter=is-automated=true 列出自動構建類型的鏡像 
  14. $ docker search [關鍵字] 
  15.  
  16. # 下載鏡像,標簽 tag 不寫默認為 lastest,也可以自己加比如 :3.2.0 
  17. $ docker pull [鏡像名][:標簽Tag] 

5.3 容器命令

  1. # 列出本機正在運行的容器,-a 列出本機所有容器包括終止運行的容器,-q 靜默模式只顯示容器編號,-l 顯示最近創建的容器 
  2. $ docker container ls     # 等價于下面這個命令 
  3. $ docker ps 
  4.  
  5. # 新建并啟動容器 
  6. $ docker run [option] [容器名] 
  7.  
  8. # 啟動容器 
  9. $ docker start [容器ID]/[容器Names] 
  10.  
  11. # 重啟容器 
  12. $ docker restart [容器ID]/[容器Names] 
  13.  
  14. # 終止容器運行 
  15. $ docker kill [容器ID]  # 強行終止,相當于向容器里面的主進程發出 SIGKILL 信號,那些正在進行中的操作會全部丟失 
  16. $ docker kill $(docker ps -a -q) # 強行終止所有容器 
  17. $ docker stop [容器ID]  # 從容終止,相當于向容器里面的主進程發出 SIGTERM 信號,然后過一段時間再發出 SIGKILL 信號 
  18. $ docker stop $(docker ps -a -q) # 終止所有容器 
  19.  
  20. # 終止運行的容器文件,依然會占據硬盤空間,可以使用 docker container rm 命令刪除,-f 強制刪除可以刪除正在運行的容器 
  21. $ docker rm [容器ID] 
  22. $ docker rm `docker ps -aq`    # 刪除所有已經停止的容器,因為沒停止的rm刪不了需要加-f 
  23.  
  24. # 查看容器的輸出,-t加入時間戳,-f跟隨最新日志打印,--tail數字顯示最后多少條,如果docker run時,沒有使用-it,就要用這個命令查看輸出 
  25. $ docker logs [容器ID] 
  26.  
  27. # 查看容器進程信息 
  28. $ docker top [容器ID]/[容器Names] 
  29. $ docker port [容器ID]/[容器Names] 
  30.  
  31. # 退出容器 
  32. $ exit           # 容器退出 
  33. ctrl + p + q     # 容器退出,快捷鍵 
  34.  
  35. # 進入容器 
  36. $ docker attach [容器ID]      # 退出容器時會讓容器停止,本機的輸入直接輸到容器中 
  37. $ docker exec -it [容器ID]    # 退出容器時不會讓容器停止,在已運行的容器中執行命令,不創建和啟動新的容器 
  38.  
  39. # 設置容器在docker啟動時自動啟動 
  40. $ docker container update --restart=always [容器名字] 

這里要特別說一下 docker run 的 option,因為最常用:

  1. --name 為容器指定一個名稱;
  2. -d 容器啟動后進入后臺,并返回容器 ID,即啟動守護式容器;
  3. -P 隨機端口映射;
  4. -p 80:8080 將本地 80 端口映射到容器的 8080 端口;
  5. bash 容器啟動以后,內部第一個執行的命令。這里啟動 bash,保證用戶可以使用 Shell;
  6. -i 以交互模式運行容器,通常與 -t 同時使用;
  7. -t 為容器重新分配一個偽輸入終端,容器的 Shell 會映射到當前的 Shell,然后在本機窗口輸入的命令,就會傳入容器,通常與 -i 同時使用;
  8. --rm 在容器終止運行后自動刪除容器文件;
  9. --restart=always 設置容器自啟動;
  10. -v /xxx:/yyy 映射命令,把本機的 xxx 目錄映射到容器中的 yyy 目錄,也就是說改變本機的 xxx 目錄下的內容, 容器 yyy 目錄中的內容也會改變;

比如我在 CentOS 下跑起來一個 CentOS 的 Docker 容器:

  1. # 下載 
  2. $ docker pull centos 
  3.  
  4. # 在上面下載的 centos 鏡像基礎上,新建一個容器名為 mycentos0901 的 centos 實例,并進入這個容器的 bash 
  5. $ docker run -it --name mycentos0901 0d120b6ccaa8 
  6.  
  7. [root@169c9fffeecd /]   # 進入容器,下面輸入命令,注意這里 root 后面的一串 ID 
  8. $ ls       # 可以看到centos的根目錄文件列表 
  9. $ docker   # bash: docker: command not found 這個容器沒有安裝docke 

是不是很神奇,我們可以在一開始的 CentOS 下面執行 docker ps 來查看容器列表:

image-20200901225909737

你會發現上面那個 ID,正是下面列表中跑起來的這個容器的 ID,鏡像的 ID 也是我們前面 pull 下來的 CentOS 鏡像 ID,名字也是我們起的 mycentos0901。

如果 docker run 之后報 Conflict. The container name "xxxx" is already in use by container 就直接運行 docker rm $(docker ps -a -q) 刪除已停止的容器,或者精確刪除 docker rm [containerID] 也可以,就可以了。

5.4 幾個常見場景的命令使用

守護式啟動容器

使用 centos 以后臺模式啟動一個容器 docker run -d --name mycentos0903 0d120b6ccaa8,啟動之后 docker ps -a 查看,發現容器并不在運行中,這是因為 Docker 的運行機制:Docker 容器后臺運行,必須有一個前臺進程。

容器運行的命令如果不是那些一直掛起的命令,比如 top、tail ,運行結束會自動退出。所以為了讓容器持續在后臺運行,那么需要將運行的程序以前臺進程的形式運行。

比如這里在后臺運行一個命令,這個命令一直在打印 docker run -d centos /bin/sh -c "while true; do echo hello zzyy; sleep 2; done",然后我們 logs 查看一下:

docker_logs

退出容器后對容器操作

退出容器后可以通過 exec 方法對正在運行的容器進行操作:

image-20200911142617186

在容器中拷貝文件到外部

拷貝文件使用 cp 命令

  1. $ docker cp [容器ID]/[容器Names]:[要拷貝的文件目錄] [本機目錄]   # 容器文件拷貝到本機 
  2. $ docker cp [本機目錄] [容器ID]/[容器Names]:[要拷貝的文件目錄]   # 本機文件拷貝到容器 

cp 不僅能把容器中的文件/文件夾拷貝到本機,也可以把本機中的文件/文件夾拷貝到容器。

演示一下,這里先到容器里面創建一個無聊的文件 xixi.txt,然后拷貝到本機:

image-20200921210352644

實用的時候,我們可以拷貝配置、日志等文件到本地。

6. 安裝 MySQL

  1. # 查詢鏡像 
  2. $ docker search mysql 
  3.  
  4. # 下載鏡像,實測沒配置鏡像加速的時候會比較慢,配置了就好一些 
  5. $ docker pull mysql 
  6.  
  7. # 查看鏡像 
  8. $ docker images 
  9.  
  10. # 創建并運行容器 
  11. $ docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=888888 -v /Users/sherlocked93/Personal/configs/mysql.d:/etc/mysql/conf.d --name localhost-mysql mysql 

稍微解釋一下上面的參數:

  1. -p 3307:3306 將本機的 3307 端口映射到 mysql 容器的 3306 端口,根據需要自行更改;
  2. -e MYSQL_ROOT_PASSWORD= 設置遠程登錄的 root 用戶密碼;
  3. --name 可選,設置容器別名;
  4. -v xxx/mysql.d:/etc/mysql/conf.d 將本地目錄下設置文件夾映射到容器的 /etc/mysql/conf.d
  5. -v xxx/logs:/logs 將本機指定目錄下的 logs 目錄掛載到容器的 /logs
  6. -v xxx/data:/var/lib/mysql 將主機制定目錄下的 data 目錄掛載到容器的 /var/lib/mysql

運行截圖:

安裝Mysql

然后去 Navicat 中就可以連接到 MySQL 了。

這也太爽了!真的是幾行命令就裝好了啊,比之前真是快樂多了 ??

7. 安裝 Nginx

Nginx 的安裝和其他的類似,如果你還不太了解 Nginx 如何使用,可以參看 這篇文章,看完基本就了解如何使用和配置了。

  1. # 查詢/下載鏡像 
  2. $ docker search nginx 
  3. $ docker pull nginx 

image-20200922203203685

然后創建一個臨時的容器,目的是把默認配置拷貝到本機,我這里把配置文件放到 /mnt 目錄下,主要是三個配置文件夾:

  1. /etc/nginx 放置 Nginx 配置文件;
  2. /var/log/nginx/ 放置 Nginx 日志文件;
  3. /usr/share/nginx/html/ 放置 Nginx 前端靜態文件都放在這個文件夾;

分別把這幾個目錄都拷貝到本機的 /mnt 文件夾下的 nginx、nginx_logs、html 文件夾。

剛剛創建的臨時容器沒用了 docker rm -f [臨時容器ID] 把臨時容器干掉,然后 docker run 重新創建 Nginx 容器:

  1. $ docker run -d --name localhost-nginx -p 8082:80 \ 
  2. -v /mnt/nginx:/etc/nginx \ 
  3. -v /mnt/nginx_logs:/var/log/nginx \ 
  4. -v /mnt/html:/usr/share/nginx/html \ 
  5. --privileged=true nginx 

--privileged=true 表示容器內部對掛載的目錄擁有讀寫等特權。

其他配置剛剛上面之前已經講過,應該不用講了。

image-20200922204931582

然后在你自己瀏覽器上就可以訪問了,如果是云服務器,記得開放對應端口。

8. 安裝 Easy Mock

因為 Easy Mock 依賴 Redis 和 MongoDB,因此本地環境使用 docker-compose 來搭建 Easy Mock 應該算是最佳實踐了。

安裝 docker-compose

官方文檔:https://docs.docker.com/compose/install/

首先你得確定擁有 docker 環境,如果你是 Windows / Mac 用戶,那么安裝客戶端,就會自帶 docker-compose 了。

因為本次我們是在云服務器 CentOS7.6 上搭建,所以我們需要自行安裝 docker-compose,運行如下命令,下載當前穩定版本的 docker-compose

  1. $ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(unam 

修改文件權限為可執行文件

  1. $ sudo chmod +x /usr/local/bin/docker-compose 

驗證是否安裝成功

  1. $ docker-compose version 

編寫 docker-compose.yml 配置文件

可以參考官方文檔給出的部署文檔,也可以參考我下面的配置過程。

首先新建文件 docker-compose.yml 并將下面 docker-compose 文件內容復制進入 docker-compose.yml,然后將內容中注釋位置替換為自己需要的本地地址

  1. version: '3' 
  2.  
  3. services: 
  4.   mongodb: 
  5.     image: mongo:3.4.1 
  6.     volumes: 
  7.       #  /apps/easy-mock/data/db 是數據庫文件存放地址,根據需要修改為本地地址 
  8.       - '/apps/easy-mock/data/db:/data/db' 
  9.     networks: 
  10.       - easy-mock 
  11.     restart: always 
  12.  
  13.   redis: 
  14.     image: redis:4.0.6 
  15.     command: redis-server --appendonly yes 
  16.     volumes: 
  17.       #  /apps/easy-mock/data/redis 是 redis 數據文件存放地址,根據需要修改為本地地址 
  18.       - '/apps/easy-mock/data/redis:/data' 
  19.     networks: 
  20.       - easy-mock 
  21.     restart: always 
  22.  
  23.   web: 
  24.     image: easymock/easymock:1.6.0 
  25.     # easy-mock 官方給出的文件,這里是 npm start,這里修改為 npm run dev 
  26.     command: /bin/bash -c "npm run dev:server" 
  27.     ports: 
  28.       - 7300:7300  # 改為你自己期望的映射 
  29.     volumes: 
  30.       # 日志地址,根據需要修改為本地地址 
  31.       - '/apps/easy-mock/logs:/home/easy-mock/easy-mock/logs' 
  32.     networks: 
  33.       - easy-mock 
  34.     restart: always 
  35.  
  36. networks: 
  37.   easy-mock: 

啟動 Easy Mock

在 docker-compose 文件目錄下,運行如下命令:

  1. $ docker-compose up -d 

如果遇到 easymock docker 實例報文件權限錯誤

  1. Error: EACCES: permission denied.... 

要在項目根目錄執行以下命令

  1. $ chmod 777 /yourfile/logs 

然后就可以通過瀏覽器上的 你的域名.com:7300 訪問到 easy-mock 了!

如果你覺得域名后面跟著端口號挺難看的,你可以通過配置 Nginx 的二級域名來訪問你部署的 easy-mock,配置二級域名的方法參見 這篇文章

9. 可視化管理

關于可視化查詢工具,這里就簡單推介一個 LazyDocker,由于是在終端運行的,而且支持鍵盤操作和鼠標點擊,就挺騷氣的,有了這個一些查詢語句可以少打幾次了。

lzd

安裝比較簡單,運行下面的命令:

  1. $ docker run --rm -it -v \ 
  2. /var/run/docker.sock:/var/run/docker.sock \ 
  3. -v ~/.config/lazydocker:/.config/jesseduffield/lazydocker \ 
  4. lazyteam/lazydocke 

可以設置一個終端的 alias

  1. $ alias lzd='docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v ~/.config/lazydocker:/.config/jesseduffield/lazydocker lazyteam/lazydocker' 

然后你在終端輸入 lzd 就可以瀏覽你的鏡像、容器、日志、配置、狀態等等內容了。

10. 結語

由于在下目前使用 Docker 的主要場景是 MySQL、Nginx 之類工具的安裝,所以本文所介紹的內容也大多屬于這個場景。

篇幅原因 Docker 還有一些內容本文沒有介紹,但上面的內容已基本滿足日常的使用,其他 Docker 的內容可以關注一下在下的后續文章~

網上的帖子大多深淺不一,甚至有些前后矛盾,在下的文章都是學習過程中的總結,如果發現錯誤,歡迎留言指出~

參考文檔:

  • Empowering App Development for Developers | Docker 官方網站
  • Docker核心技術(基礎篇)
  • Docker安裝mysql
  • Docker文檔
  • Docker-compose文檔
  • 使用 docker 運行 easy-mock - 知乎
  • docker-compose easy-mock - 簡書
  • 使用 docker 運行 easy-mock | CodingDiary
  • easymock官方docker倉庫:easy-mock/easy-mock-docker
  • 使用docker安裝nginx

 

責任編輯:武曉燕 來源: 前端下午茶
相關推薦

2022-01-26 00:02:00

Nacos服務注冊中心

2022-09-06 08:40:33

應用系統登錄方式Spring

2020-06-15 17:05:46

前端二進制瀏覽器

2020-10-18 17:09:14

前端開發技術

2024-07-03 10:09:29

2020-09-15 10:25:13

Redis命令Java

2022-08-15 09:22:12

JWT認證系統

2017-01-09 09:34:03

Docker容器傳統虛擬機

2024-12-18 18:53:48

2021-07-19 07:01:20

Chrome 插件瀏覽器

2022-02-13 23:00:48

前端微前端qiankun

2024-12-26 09:41:00

ML.NET圖像分類開發者

2021-11-12 07:00:46

tsdx開發環境

2017-06-26 09:15:39

SQL數據庫基礎

2025-04-27 01:33:23

MongoDBDocker容器

2021-02-18 09:06:39

數據訪問者模式

2025-01-07 14:42:09

2019-09-02 13:57:07

Helm Chart工具Kubernetes

2021-11-24 22:42:15

WorkManagerAPI
點贊
收藏

51CTO技術棧公眾號

亚洲网站在线| 另类在线视频| 亚洲综合一二三区| 久久久久网址| 一炮成瘾1v1高h| 今天的高清视频免费播放成人| 精品视频在线播放免| 蜜臀一区二区三区精品免费视频| av在线看片| 2020日本不卡一区二区视频| 91精品视频免费| 成年免费在线观看| **女人18毛片一区二区| 亚洲欧洲国产一区| 69久久精品无码一区二区| 欧美成人性网| 一二三四区精品视频| 日韩精品久久一区| 亚洲狼人综合网| 卡一卡二国产精品 | 亚洲一区国产精品| 午夜婷婷在线观看| 国内精品亚洲| 欧美成人免费小视频| 少妇久久久久久久久久| www.豆豆成人网.com| 欧美日韩国产一级二级| 男女午夜激情视频| 日本不卡影院| 亚洲乱码国产乱码精品精98午夜| 欧美日韩国产高清视频| 亚洲精品综合网| 国产精选一区二区三区| 国产精品综合不卡av| 成年人视频在线免费看| 在线播放日韩| 欧美日韩国产va另类| 青青草华人在线视频| 九九综合九九| 亚洲欧美日韩一区二区在线| 中文视频在线观看| 中文在线综合| 欧美mv和日韩mv的网站| 男人操女人下面视频| 色诱色偷偷久久综合| 欧美三区在线观看| 8x8x最新地址| 97久久网站| 欧美日韩一级二级三级| 一区二区三区 日韩| 91九色综合| 精品1区2区3区| 538任你躁在线精品免费| 欧美一级二级视频| 欧美三级在线播放| 中文字幕第88页| 色婷婷成人网| 欧美一区二区三区免费视频 | 国产精品自拍99| 亚洲欧洲视频| 欧美怡春院一区二区三区| 日韩精品一区二区三区国语自制| 国产综合自拍| 国外成人在线视频| 日本少妇久久久| 亚洲欧美网站| 国产精品99久久久久久白浆小说| 午夜精品久久久久久久蜜桃| 免费在线视频一区| 91亚洲国产成人久久精品网站 | 日本免费一区二区三区等视频| 欧美日韩精品三区| 国产人妖在线观看| 久久九九热re6这里有精品| 日韩av在线播放资源| 干b视频在线观看| 97精品国产| 欧美国产日韩中文字幕在线| 影音先锋亚洲天堂| 日本va欧美va欧美va精品| 亚洲a成v人在线观看| 欧日韩在线视频| 久久久精品综合| 正在播放一区| 少妇在线看www| 欧美日韩在线电影| 中文字幕永久免费| 九九免费精品视频在线观看| 日韩中文字幕在线观看| 久久精品视频日本| 日本特黄久久久高潮| 成人在线激情视频| 午夜视频www| 一区精品在线播放| 成人免费毛片网| 日韩色性视频| 亚洲男人的天堂在线播放| 久久久久久视频| 欧美资源在线| 97在线中文字幕| 久久久久久久久亚洲精品| 综合电影一区二区三区| 国产免费黄色av| 国产不卡精品在线| 国产视频久久久久| 国产这里有精品| 日韩国产欧美在线视频| www.av一区视频| 中文字幕在线观看日本| 欧美日韩国产精品一区二区三区四区 | 99国产精品| 91香蕉亚洲精品| 成人全视频高清免费观看| 亚洲成人精品一区| 视频免费1区二区三区 | 亚洲欧美另类国产| 免费网站观看www在线观| 日日夜夜免费精品| 韩国成人av| 污影院在线观看| 欧美精品色一区二区三区| 无码人妻精品一区二区三区温州| 一区二区在线| 91精品中文在线| 国产午夜视频在线观看| 天涯成人国产亚洲精品一区av| 成人免费播放视频| 久久精品欧美一区| 国产精品直播网红| 国产午夜视频在线观看| 日韩欧美主播在线| 国产美女视频免费观看下载软件| 欧美日本一区| 91免费人成网站在线观看18| 99免在线观看免费视频高清| 色哦色哦哦色天天综合| 一区二区三区少妇| 1024日韩| 狼狼综合久久久久综合网| av在线播放资源| 亚洲国语精品自产拍在线观看| 欧美日韩在线观看成人| 国产一区二区三区香蕉| 综合久久国产| 国产一区二区三区国产精品| 久久婷婷国产麻豆91天堂| 中文字幕日韩国产| 国产精品久久看| 亚洲一区日韩精品| 91日韩视频| 91久久精品国产| 羞羞污视频在线观看| 日韩视频中午一区| 日韩xxx高潮hd| www.爱久久.com| 日韩中文字幕在线视频观看| 欧美一性一交| 欧美综合国产精品久久丁香| 精品999视频| 欧美在线短视频| 国产精品精品软件男同| 国产一区二区三区免费观看| 喜爱夜蒲2在线| 国产96在线亚洲| 992tv成人免费视频| 三级在线视频| 欧美视频你懂的| 99鲁鲁精品一区二区三区| 国产福利91精品| av日韩一区二区三区| 亚洲素人在线| 国产精品亚洲美女av网站| 好吊日视频在线观看| 精品国产免费视频| 99超碰在线观看| 最近日韩中文字幕| 日本在线不卡一区二区| 老司机午夜精品视频| 中国成人在线视频| 精品亚洲精品| 国产精品网站入口| 丁香花视频在线观看| 亚洲欧美日韩精品久久奇米色影视| 中文字幕有码无码人妻av蜜桃| 日韩久久一区二区| 欧亚乱熟女一区二区在线| 日欧美一区二区| 久久久久久久香蕉| 国产不卡av一区二区| 91精品国产综合久久香蕉| 高清电影在线观看免费| 亚洲视频在线观看免费| www.五月婷| 在线亚洲人成电影网站色www| 希岛爱理中文字幕| 国产午夜精品久久| 久久人妻少妇嫩草av蜜桃| 美女诱惑黄网站一区| 最新中文字幕久久| 亚洲欧美校园春色| 亚洲自拍偷拍在线| 岛国一区二区| 91精品国产91久久久久久| 国产最新在线| 亚洲欧洲免费视频| 六月丁香色婷婷| 欧美日韩色一区| 久久精品国产成人av| 亚洲另类一区二区| 国产wwwwxxxx| 久久久久久亚洲综合影院红桃| 亚洲一区二区三区四区精品| 日本视频在线一区| www国产精品内射老熟女| 在线成人激情| 一区二区三区欧美在线| 亚欧日韩另类中文欧美| 国产成人av一区二区三区| 色噜噜成人av在线| 国产精品一区二区3区| 国模套图日韩精品一区二区| 久久久在线观看| 自拍亚洲图区| 免费不卡在线观看av| 五月婷婷在线观看| 在线精品播放av| 国产精品久久久久一区二区国产 | 91久久国产精品| 精品国产黄a∨片高清在线| 茄子视频成人在线| 日韩av影片| 97久久伊人激情网| 91探花在线观看| 欧美国产视频日韩| 毛片在线网址| 欧美精品久久久久久久| 亚洲国产精品精华素| 欧美精品制服第一页| 巨大荫蒂视频欧美大片| 久久亚洲精品一区二区| 黄色网在线免费看| 欧美超级乱淫片喷水| h片在线播放| 免费97视频在线精品国自产拍| av网站在线免费| 欧美日韩xxx| 午夜小视频福利在线观看| 欧美极品少妇全裸体| 欧美四级在线| 国模视频一区二区三区| 精品极品在线| 国产99在线|中文| 国产极品一区| 亚洲一区二区三区四区在线播放| 久久久久久爱| 国产精品12| 亚洲毛片免费看| 日韩一区二区三区资源| 日韩精品午夜| 日韩精品福利片午夜免费观看| 欧美日本一区二区高清播放视频| 女人帮男人橹视频播放| 亚洲一区网站| 天天干天天干天天干天天干天天干| 美女网站色91| 久久无码人妻一区二区三区| 成人高清视频免费观看| 最新中文字幕视频| 中文字幕在线观看不卡视频| 动漫性做爰视频| 午夜精品久久久久久不卡8050| 国产欧美一区二区三区在线看蜜臂| 欧美最猛性xxxxx直播| 91麻豆成人精品国产| 精品日韩在线观看| 麻豆影视在线| 麻豆一区二区在线观看| 91福利在线尤物| 国产精品av网站| 高清在线一区二区| 精品国产乱码久久久久久蜜柚 | 国产免费一区二区视频| 久久久噜噜噜| 国产高清av片| 久久久久久久久久久黄色 | 亚洲香蕉av| 欧美一级视频免费看| 欧美a级理论片| 成年人小视频在线观看| 久久精品一区二区三区不卡| 性色av无码久久一区二区三区| 精品久久久一区二区| 一起草av在线| 亚洲老头老太hd| 先锋影音在线资源站91| 国产精品99导航| 高清日韩中文字幕| 在线精品亚洲一区二区| 亚洲一区国产| 亚洲一区二区图片| 国产日韩高清在线| 国语对白一区二区| 欧美绝品在线观看成人午夜影视| 日本一本草久在线中文| 欧美成人激情视频免费观看| 在线日本欧美| 国产美女精品在线观看| 日韩中文在线电影| 国产主播在线看| 国产成人在线色| 狂野欧美性猛交| 日韩欧美精品网站| 隣の若妻さん波多野结衣| 久久久精品国产一区二区| 黑人精品一区| 九九九九九九精品| 国产综合精品| av影片在线播放| 亚洲欧美日韩精品久久久久| 无码人妻精品一区二区三区蜜桃91| 亚洲成人av片在线观看| 国产激情在线视频| 国产日韩欧美在线观看| 国语产色综合| 欧美一级黄色影院| 91网站视频在线观看| 黄网站免费在线| 日韩欧美一区二区免费| 黄色网在线免费看| 国产专区精品视频| 久久社区一区| 亚洲综合色在线观看| 国产欧美日韩在线视频| 五月天婷婷导航| 亚洲品质视频自拍网| 在线看的毛片| 欧美精品在线一区| 老鸭窝毛片一区二区三区| 黄色性生活一级片| 精品福利樱桃av导航| 四虎成人免费在线| 欧美在线精品免播放器视频| 丝袜美腿综合| 午夜肉伦伦影院| 久久嫩草精品久久久久| 精品久久久久久久久久久国产字幕 | 久久中文字幕av| 色91精品久久久久久久久| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 最近的2019中文字幕免费一页| 国精产品一区一区三区四川| 日韩精品久久一区二区三区| 免费久久99精品国产| 五月天婷婷丁香网| 欧美精品aⅴ在线视频| 黄网站免费在线观看| 99精彩视频在线观看免费| 国产精品magnet| 超碰男人的天堂| 欧美影视一区二区三区| 午夜老司机在线观看| 96精品久久久久中文字幕| 欧美视频导航| 人妻少妇精品视频一区二区三区| 一本大道av一区二区在线播放| 国产福利第一视频在线播放| 国产伦精品免费视频| 欧美国产91| 香港三级日本三级| 欧美视频你懂的| 四虎影院观看视频在线观看| 激情视频一区二区| 日韩影院精彩在线| 小泽玛利亚一区二区免费| 精品国产免费一区二区三区四区 | av毛片在线| 鲁丝片一区二区三区| 精品夜夜嗨av一区二区三区| 精品一区二区三区四| 亚洲久久久久久久久久| 2020国产精品小视频| 日韩中字在线观看| 中文字幕不卡在线播放| 性一交一乱一色一视频麻豆| 18久久久久久| 91精品久久久久久久蜜月| 野花社区视频在线观看| 777欧美精品| 中文字幕不卡三区视频| 可以免费看的黄色网址| 91免费视频大全| 国产三级在线观看视频| 日本韩国欧美精品大片卡二| 伊人色**天天综合婷婷| 国产美女免费无遮挡| 日韩免费看网站| 青青伊人久久| 男人透女人免费视频| 一区二区三区在线观看动漫 | 美女亚洲一区|