国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Docker 101:介紹與入門體驗

移動開發
Docker是一種在Linux容器里運行應用的開源工具,一種輕量級的虛擬機。我將在本文介紹如今在部署復雜系統時公司所面臨的挑戰,Docker怎樣有效地解決這個問題,以及Docker的其他用例。

Docker是一種在Linux容器里運行應用的開源工具,一種輕量級的虛擬機。除了運行應用,Docker還提供了一些工具,借助Docker Index或自己托管的Docker注冊表對進行了集裝箱化處理的應用進行分發,從而簡化復雜應用的部署過程。

我將在本文介紹如今在部署復雜系統時公司所面臨的挑戰,Docker怎樣有效地解決這個問題,以及Docker的其他用例。

部署的挑戰

服務器應用的部署已經越來越復雜了。把幾個Perl腳本拷貝到正確目錄就完成服務器應用的安裝,這種時代已經一去不復返了。如今的軟件有很多類型的需求:

  • 對已安裝軟件和庫的依賴(“Python版本高于2.6.3,使用Django 1.2”)
  • 依賴于正在運行的服務(“需要一個MySQL 5.5數據庫和一個RabbitMQ隊列”)
  • 依賴于特定的操作系統(“在64位的Ubuntu Linux 12.04上構建、測試”)
  • 資源需求:
    • 最小的可用內存(“需要1GB的可用內存”)
    • 能綁定特定的端口(“綁定80和443端口”)

我們來看一個相對簡單的應用的部署:Wordpress。Wordpress的安裝通常要求:

  • Apache 2
  • PHP 5
  • MySQL
  • Wordpress源碼
  • 一個Wordpress MySQL數據庫,配置Wordpress使用該數據庫
  • Apache的配置:
    • 加載PHP模塊
    • 支持URL重寫和.htaccess文件
    • 指向WordPress源碼的DocumentRoot

在服務器上部署、運行這樣一個系統,我們可能會遇到下面的問題和挑戰:

  1. 隔離性:如果我們已經在這個服務器上部署了不同的網站,已有的網站只能在nginx上 運行,而Wordpress依賴于Apache,這時我們就會有麻煩:它們都監聽80端口。同時運行兩個網站是可以的,但需要調整配置(修改監聽端口), 設置反向代理等。庫級別也會出現類似的沖突,如果還要運行一個仍然依賴PHP4的老應用就會出問題,因為Wordpress不再支持PHP4,同時運行 PHP4和PHP5則非常困難。運行在同一個服務器上的應用沒有互相隔離(在文件系統級別和網絡級別),所以它們可能會互相沖突。
  2. 安全性:Wordpress的安全記錄并不是非常好。所以還是給它創建個沙箱,至少黑客入侵時不會影響其他運行的應用。
  3. 升級、降級:升級應用一般會覆蓋現有文件。升級過程中會發生什么?系統要關閉么?如果升級失敗,或者不對該怎么辦?我們怎樣快速回退到先前的版本?
  4. 快照、備份:一旦所有的內容都設置好,就給系統創建一個“快照”,以便能備份快照,甚至能移到另一個服務器上再次啟動,或者拷貝到多個服務器上以備不時之需。
  5. 重復性:系統出新版本之后,比較好的做法是先在測試基礎設施上自動部署并測試,然后再發布到生產系統。通常會利用諸如ChefPuppet等 工具在服務器上自動安裝一堆包,等一切內容都就緒后,再在生產系統上運行相同的部署腳本。這在百分之九十九的情況下都沒有問題。但有百分之一的例外,在部 署到測試環境和生產環境之間的時間跨度里,你依賴的包在包倉庫里有了更新,而新版本并不兼容。結果生產環境的設置和測試環境不同,還有可能破壞生產系統。 假如沒有控制部署的每一個方面(例如托管自己的APT或YUM倉庫),持續在多個階段(比如測試、預演、生產環境)重復搭建出完全相同的系統就很困難。
  6. 資源限制:如果我們的Wordpress耗費CPU資源,并占用了所有的CPU周期,導致其他應用無法做任何事情怎么辦?如果它用盡了全部可用的內存呢?或者瘋狂寫日志阻塞磁盤呢?要是能限制應用的可用資源,比如CPU、內存和磁盤空間,就會非常方便。
  7. 易于安裝:也許有Debian或CentOS包,抑或是能自動執行所有復雜步驟并安裝 Wordpress的Chef菜譜。但這些菜譜很難穩定下來,因為它們需要考慮目標系統上可能的系統配置。很多情況下,這些菜譜只能在干凈的系統上運行。 因此,你不太可能更換成自己的包或Chef菜譜。這樣的話,安裝就是個復雜的系統工程,而不是午休期間就能搞定的事情。
  8. 易于移除:軟件應該能輕松、干凈地移除,不留痕跡。但部署應用通常要調整已有的配置文件、設置狀態(MySQL數據庫的數據,日志),完全移除應用也變得不那么容易。

那我們應該如何解決這些問題呢?

虛擬機!

我們決定在單獨的虛擬機上運行獨立的應用,例如Amazon的EC2,大部分問題這時會迎刃而解:

  1. 隔離性:在一個VM上安裝一個應用,應用是完全獨立的,除非它們攻入了對方的防火墻。
  2. 重復性:用你喜歡的方式準備系統,然后創建一個AMI。你可以隨意實例化多個AMI實例。完全是可重現的。
  3. 安全性:由于我們完全隔離,如果Wordpress遭到攻擊,其余的基礎設施并不會受到影響——除非你沒有保管好SSH密鑰或者在哪里都使用同一個密碼,但你應該不會這么做吧?
  4. 資源限制:VM會分配特定的CPU周期、可用內存和磁盤空間,沒有加價的話就不能超額。
  5. 易于安裝:越來越多的應用能夠在EC2上運行,只要在AWS marketplace上點擊一個按鈕就能實例化應用。啟動只需要幾分鐘,就是這樣。
  6. 易于移除:不需要某個應用了?銷毀VM。干凈又方便。
  7. 升級、降級:Netflix如何部署代碼里提到,只需要在新VM上部署新版本,然后讓負載均衡器指向部署了新版本的VM。不過應用如果需要在本地保存狀態,這種方法就不是很好用了。
  8. 快照、備份:點擊一個按鈕(或者調用一下API)就能獲得EBS磁盤的快照,快照會備份到S3中。

完美!

不過……我們有個新問題:虛擬機在兩個方面比較昂貴

  • 金錢:你真的有那么多錢為每個應用啟動一個EC2實例?另外你能預測到需要多少個實例么?如果你以后需要更多的資源,你需要停止VM進行升級——否則就要為閑置資源白白付錢,直到真正用起來(除非你用能動態調整大小的Solaris Zones,比如Joyent上的)。
  • 時間:虛擬機相關的操作大多都很慢:啟動要幾分鐘,捕捉快照要幾分鐘,創建鏡像也需要幾分鐘。世界不停轉動,我們可沒有這種時間!

我們能做得更好嗎?

進入Docker的世界吧。

Docker是由公共PaaS提供商dotCloud的人發起的開源項目,于去年初發起。從技術角度來說,Docker(主要用Go語言編寫)試圖簡化兩種已有技術的使用:

  • LXC:Linux容器,允許獨立進程在比普通Unix進程更高的隔離級別上運行。使用的技術術語是集裝箱化:一個容器里運行一個進程。容器支持的隔離級別有:
    • 文件系統:容器只能訪問自己的沙箱文件系統(類似于chroot),否則要專門掛載到容器的文件系統中才能訪問。
    • 用戶名字空間:容器有自己的用戶數據庫(也就是容器的root不等于主機的root賬戶)。
    • 進程名字空間:只有容器里的進程才是可見的(ps aux的輸出會非常簡潔)。
    • 網絡名字空間:每個容器都有自己的虛擬網絡設備和虛擬IP(因此它可以綁定任意端口,不用占用主機端口)。
  • AUFS:高級多層的統一文件系統,可用來創建聯合、寫時拷貝的文件系統。

Docker可以安裝在任何支持AUFS和內核版本大于等于3.8的Linux系統上。但從概念上來說它并不依賴于這些技術,以后也可以和類似的技術一起運行,例如Solaris的ZonesBSD jails,并將ZFS作為文件系統。不過目前只能選擇Linux 3.8+和AUFS。

那Docker為什么有意思呢?

  • Docker非常輕量。啟動VM是個大動作,需要占用大量內存;而啟動Docker容器只耗費很少的CPU和內存,并且非常快。幾乎和啟動一個常規進程沒什么區別。不僅運行容器快,構建鏡像、捕獲文件系統的快照也很快。
  • 它運行在已經虛擬化過的環境中。也就是說,你可以在EC2實例、Rackspace VM或VirtualBox里運行Docker。事實上,在Mac和Windows上使用Docker的首選方式是使用Vagrant
  • Docker容器能移植到任何運行Docker的操作系統上。無論是Ubuntu還是CentOS,只要Docker運行著,你的容器就能運行。

讓我們回到前面的部署、操作問題列表,看看Docker是怎么解決的:

  1. 隔離性:Docker在文件系統和網絡級別隔離了應用。從這個意義上來講很像在運行”真正的“虛擬機。
  2. 重復性:用你喜歡的方式準備系統(登錄并在所有軟件里執行apt-get命令,或者使用Dockerfile),然后把修改提交到鏡像中。你可以隨意實例化若干個實例,或者把鏡像傳輸到另一臺機器,完全重現同樣的設置。
    • 安全性:Docker容器比普通的進程隔離更為安全。Docker團隊已經確定了一些安全問題,正在著手解決。
    • 資源約束:Docker現在能限制CPU的使用率和內存用量。目前還不能直接限制磁盤的使用情況。
    • 易于安裝:Docker有一個Docker Index,這個倉庫存儲了現成的Docker鏡像,你用一條命令就可以完成實例化。比如說,要使用Clojure REPL鏡像,只要運行docker run -t -i zefhemel/clojure-repl命令就能自動獲取并運行該鏡像。
    • 易于移除:不需要應用了?銷毀容器就行。
    • 升級、降級:和EC2 VM一樣:先啟動應用的新版本,然后把負載均衡器切換到新的端口。
    • 快照、備份:Docker能提交鏡像并給鏡像打標簽,和EC2上的快照不同,Docker是立即處理的

怎么使用Docker

假設你已經安裝了Docker。要在Ubuntu容器中運行bash,只要執行:

docker run -t -i ubuntu /bin/bash

根據“ubuntu”鏡像的下載情況,Docker會選擇下載或者使用本地可用的拷貝,然后在Ubuntu容器里運行/bin/bash。接著你就能在容器里執行幾乎所有典型的Ubuntu操作,比如安裝新的包。

我們來安裝個“hello”:

$ docker run -t -i ubuntu /bin/bash
root@78b96377e546:/# apt-get install hello
Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed:
  hello
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 26.1 kB of archives.
After this operation, 102 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu/ precise/main hello amd64 2.7-2 [26.1 kB]
Fetched 26.1 kB in 0s (390 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package hello.
(Reading database ... 7545 files and directories currently installed.)
Unpacking hello (from .../archives/hello_2.7-2_amd64.deb) ...
Setting up hello (2.7-2) ...
root@78b96377e546:/# hello
Hello, world!

現在退出,然后再運行一次相同的Docker命令:

root@78b96377e546:/# exit
exit
$ docker run -t -i ubuntu /bin/bash
root@e5e9cde16021:/# hello
bash: hello: command not found

怎么了?我們美麗的hello命令哪兒去了?事實上我們剛剛根據干凈的Ubuntu鏡像啟動了一個新的容器。要繼續先前那個,我們必須把它提交倉庫中。我們退出這個容器,看看先前啟動容器的ID是什么:

$ docker ps -a
ID                  IMAGE                   COMMAND                CREATED              STATUS              PORTS
e5e9cde16021        ubuntu:12.04            /bin/bash              About a minute ago   Exit 127
78b96377e546        ubuntu:12.04            /bin/bash              2 minutes ago        Exit 0

docker ps命令能列出當前運行的容器,docker ps -a還會顯示已經退出的容器。每個容器都有一個唯一的ID,類似于Git提交哈希值。命令也列出了容器基于的鏡像、運行的命令、創建時間、當前狀態,以及容器暴露的端口和與主機端口之間的映射。

上面那個是我們第二次啟動的容器,不包含“hello”;下面那個是我們想重用的,所以我們提交一下,再創建一個新的容器:

$ docker commit 78b96377e546 zefhemel/ubuntu
356e4d516681
$ docker run -t -i zefhemel/ubuntu /bin/bash
root@0d7898bbf8cd:/# hello
Hello, world!

我用容器ID把容器提交到了倉庫中。倉庫類似于Git倉庫,包含一或多個打了標簽的鏡像。如果像我一樣沒有指定標簽名稱,標簽會被命名為“latest”。運行docker images命令可以查看本地安裝的所有鏡像。

Docker提供了一些基礎鏡像(比如ubuntucentos),你也可以創建自己的鏡像。用戶倉庫的命名模型和Github的類似:Docker用戶名后面跟一個斜線,然后再跟倉庫名稱。

前面創建Docker鏡像的方式并不是特別正規,你可以試試。更簡潔的方式是使用Dockerfile

使用Dockerfile構建鏡像

Dockerfile是個簡單的文本文件,介紹了如何從基礎鏡像構建鏡像。我在Github上提供了幾個Dockerfile。下面的文件用來運行、安裝SSH服務器:

FROM ubuntu
RUN apt-get update
RUN apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo "root:root" | chpasswd
EXPOSE 22

上面的內容一目了然。FROM命令定義了基礎鏡像,基礎鏡像可以是官方的,也可以是我們剛剛創建的zefhemel/ubuntuRUN命令用來配置鏡像。在這里,我們更新了APT包倉庫,安裝了openssh-server,創建了一個目錄,然后給我們的root賬戶設置了一個再簡單不過的密碼。EXPOSE命令會向外暴露22端口(SSH端口)。接下來看看如何構建并實例化這個Dockerfile。

第一步是構建一個鏡像。在包含Dockerfile的目錄下運行:

$ docker bui ld -t zefhemel/ssh .

這會創建一個zefhemel/ssh倉庫,包含我們新的SSH鏡像。如果創建成功,就能進行實例化了:

$ docker run -d zefhemel/ssh /usr/sbin/sshd -D

和前面的命令不一樣。-d表示會在后臺運行容器,而不是運行bash,所以我們用前臺模式(用-D參數指定)運行了sshd守護進程。

讓我們檢查運行中的容器,看看命令做了些什么:

$ docker ps
ID                  IMAGE                   COMMAND                CREATED             STATUS              PORTS
23ee5acf5c91        zefhemel/ssh:latest     /usr/sbin/sshd -D      3 seconds ago       Up 2 seconds        49154->22

可以看到我們的容器啟動著。PORTS頭下的內容比較有意思。由于我們EXPOSE了22端口,這個端口現在映射到了主機系統的一個端口(這里是49154)。讓我們看看它能否運行。

$ ssh root@localhost -p 49154
The authenticity of host '[localhost]:49154 ([127.0.0.1]:49154)' can't be established.
ECDSA key fingerprint is f3:cc:c1:0b:e9:e4:49:f2:98:9a:af:3b:30:59:77:35.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:49154' (ECDSA) to the list of known hosts.
root@localhost's password:  Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.8.0-27-generic x86_64)   * Documentation:  https://help.ubuntu.com/  The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.  Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.  root@23ee5acf5c91:~#

再次成功了!現在有了一個運行的SSH服務器,我們能登錄它。在有人猜出密碼并攻擊容器之前,讓我們先從SSH退出,殺掉容器。

$ docker kill 23ee5acf5c91

如你所見,容器的22端口映射到了49154端口,但這是完全隨機的。要把它映射到特定端口,運行命令時傳入-p參數:

docker run -p 2222:22 -d zefhemel/ssh /usr/sbin/sshd -D

現在,如果2222端口可用,我們的端口就會映射到2222上。我們在Dockerfile的結尾再添加一行內容,以便我們的鏡像對用戶更加友好:

CMD /usr/sbin/sshd -D

CMD表示構建鏡像時并不會運行命令,實例化時才運行。所以不傳遞其它參數時就會執行/usr/sbin/sshd -D。然后我們可以直接運行:

docker run -p 2222:22 -d zefhemel/ssh

得到的結果和前面一樣。要發布新創建的鏡像,只要運行docker push就可以了:

docker push zefhemel/ssh

登錄之后,鏡像就可用了,用先前的docker run命令就能執行命令。

讓我們回到Wordpress的例子。怎樣在容器里用Docker運行Wordpress呢?要構建一個Wordpress鏡像,我們要創建一個Dockerfile:

  1. 安裝Apache、PHP5和MySQL
  2. 下載Wordpress,解壓到文件系統的某個地方
  3. 創建一個MySQL數據庫
  4. 更新WordPress的配置文件,指向MySQL數據庫
  5. 把WordPress設置為Apache的DocumentRoot
  6. 啟動MySQL和Apache(比如用supervisord

幸運的是,很多人已經成功了,比如John Fink的GitHub庫就包括創建這樣一個Wordpress鏡像需要的所有內容。

Docker用例

除了用可靠、可重復的方式簡化復雜應用的部署,Docker還有很多用途。下面是一些有趣的Docker用法和項目:

  • 持續集成和部署:在Docker容器里構建軟件,確保構建之間的隔離性。構建好的軟件鏡像可以自動推到私有的Docker倉庫中,并部署到測試環境或生產環境。
  • Dokku:一個簡單的PaaS,用不到一百行的Bash構建而成。
  • FlynnDeis,兩個使用Docker的開源PaaS項目。
  • 在容器里運行桌面環境
  • CoreOS驗證了Docker的合理性,CoreOS是個非常輕量級的Linux發行版,其中的應用都用Docker安裝、運行,由systemd管理。

Docker不是什么

盡管Docker有助于系統的可靠部署,但它本身并不是個完全成熟的部署系統。它操作的是容器里運行的應用。哪個容器安裝在哪個服務器上,以及如何啟動它們,則超出了Docker的范圍。

同樣的,Docker也不處理跨多個容器(可能在多個物理服務器上,也可能在多個VM上)運行的應用。要讓容器互相通信,需要某些發現機制,來找出哪些IP和端口上的其他應用可用。這和跨常規虛擬機的服務發現非常相似。etcd等工具,或者其他的服務發現機制都能用來解決這個問題。

結論

雖然本文描述的所有內容用原始的LXC、cgroups和AUFS也可能實現,但實現起來絕對沒有那么容易或簡單。Docker提供了一種簡單的方式將復雜應用打包到容器中,而且能輕松版本化、可靠分發。進而讓輕量級的Linux容器和真正的虛擬機一樣靈活、強大,但成本更低、方式更為便捷。即便Vagrant VirtualBox VM在Macbook Pro上,使用運行在其中的Docker創建的Docker鏡像也能很好地運行在EC2Rackspace Cloud或物理硬件上,反之亦然。

Docker可以從它的網站上獲取,并免費使用。交互式的入門指南很不錯。項目的路線圖指出,第一個生產就緒的版本是2013年10月發布的0.8版本,不過此前大家已經在生產環境里使用Docker了。

責任編輯:徐川 來源: infoq
相關推薦

2022-03-10 08:24:17

Docker容器SaaS

2017-09-19 15:55:04

Docker入門實踐

2022-01-18 07:40:27

滲透測試黑客

2011-03-23 10:15:43

Opera 11.10

2024-07-01 09:08:00

2012-03-02 13:06:25

2009-08-18 17:02:45

Django入門

2013-02-22 14:45:01

.NETC#Xcode

2019-09-02 09:11:58

MySQLDocker數據

2022-10-27 15:57:26

開發工具鴻蒙

2024-12-06 08:00:00

2009-08-25 16:01:43

DataList控件入

2009-07-02 10:27:20

JSP技術JSP入門

2009-06-22 14:13:08

JSF入門

2024-01-17 08:01:28

Docker語法命令

2017-08-24 15:09:13

GAN神經網絡無監督學習

2021-09-02 07:04:45

Docker鏡像語言

2009-07-30 13:21:17

Scala入門Hello World

2009-09-24 15:02:26

Cisco認證

2018-01-08 08:50:05

Linux內核系統程序
點贊
收藏

51CTO技術棧公眾號

99久久免费观看| 992tv在线影院| 日韩欧美激情电影| 欧美一级一级性生活免费录像| 无码专区aaaaaa免费视频| 亚洲专区一区| 日韩美女写真福利在线观看| 欧美精品总汇| 欧美另类一区二区三区| 免费在线黄网| 国产视频一区二区在线观看| 一本一道久久a久久综合精品 | 国产视频观看一区| 自拍偷拍亚洲图片| 精品国产1区二区| 日本免费不卡| 亚洲欧美日韩国产综合在线| 日韩精品 欧美| 视频一区欧美精品| 91精品国产91久久久久青草| 伊人久久大香线蕉无限次| 在线亚洲国产精品网| 午夜视频在线观看网站| 午夜精品免费在线观看| www.三区| 国产丝袜欧美中文另类| 精品人妻大屁股白浆无码| 美女视频黄免费的久久| 茄子视频成人在线观看| 日韩一级欧洲| 精品九九九九| 亚洲一区中文| 日本在线免费观看一区| 久久久久免费| 相泽南亚洲一区二区在线播放 | 欧美日韩在线播放一区二区| 欧美黄色精品| 亚洲一区二区三区视频播放| 精品一区在线| 国产精品久久久久久久久久99| 神马香蕉久久| 日本精品视频在线观看| 综合国产视频| 国产精品视频男人的天堂| 视频一区中文| 91亚洲精品久久久| 99re国产精品| 一级做a爰片久久| heyzo一本久久综合| 鲁一鲁一鲁一鲁一色| www.一区二区| 国产小视频精品| 一区二区三区四区不卡在线| 色播在线观看| 欧美精品久久99| 77thz桃花论族在线观看| 亚洲摸下面视频| 四虎在线精品| 啪一啪鲁一鲁2019在线视频| 欧美理论电影大全| 国产精品久久久久久久免费大片| 亚洲一区二区毛片| 男人j进女人j| 国产清纯美女被跳蛋高潮一区二区久久w | 亚洲人成在线观看| 韩国三级成人在线| 性欧美亚洲xxxx乳在线观看| 免费久久久久久久久| 成人有码在线视频| 老牛影视一区二区三区| 日本三日本三级少妇三级66| 91论坛在线播放| 特黄特色特刺激视频免费播放| 91国产免费看| 欧美动物xxx| 国产91在线播放精品91| 亚洲激情视频| 欧美,日韩,国产在线| 亚洲资源在线观看| 亚洲小说区图片区都市| 久久天天躁夜夜躁狠狠躁2022| 久久亚洲影视| 97超碰免费观看| 一区二区在线观看免费视频播放| 欧美精品hd| www.日韩视频| 国产精品精品国产一区二区| 亚洲国产一区二区三区在线 | 成人免费看黄yyy456| 4虎在线播放1区| 日韩欧美亚洲国产精品字幕久久久| 成人黄色片视频网站| 国产精品灌醉下药二区| 少妇性bbb搡bbb爽爽爽欧美| 成人免费毛片a| 天堂a√在线| 日韩黄色高清视频| 亚洲欧美tv| 亚洲一区免费看| 亚洲综合精品自拍| 天堂网在线最新版www中文网| 97在线精品国自产拍中文| 香蕉视频成人在线观看| 天天色综合6| 亚洲激情第一页| 蜜乳av综合| 日韩av在线播放不卡| 欧美日韩激情一区二区| 亚洲精品在线播放| 亚洲精品第一区二区三区| 亚洲一区二区精品视频| 成人免费视频观看| 久久婷婷开心| 亚洲精品视频在线| 日韩黄色三级| 台湾成人av| 天天色图综合网| 久久伊人精品| 亚洲不卡一卡2卡三卡4卡5卡精品| 一区二区三区久久| 青青草国产一区二区三区| 欧美精品久久久| 欧美午夜激情视频| 国产极品模特精品一二| 99视频精品全部免费看| 欧美三级日韩在线| 色综合咪咪久久网| 日本高清不卡中文字幕| 中文字幕av一区二区| 日韩成人av影视| 97人人在线| 97se在线视频| 黄色一区二区在线观看| 精品自拍偷拍| 国产精品久久久久9999小说| 一区二区三区www| 久久97超碰色| 麻豆av在线免费观看| 99re国产视频| 亚洲成人黄色影院| 免费精品国产| 国产视频三区| 韩国19禁主播vip福利视频| 99久久精品一区| yw.尤物在线精品视频| 在线视频一区观看| 亚洲国产成人一区| 精品一区二区成人精品| 欧美网站一区二区| 国产精品久久久久久久久免费樱桃| 亚洲欧洲国产日本综合| 91福利区在线观看| 农村寡妇一区二区三区| 在线免费观看成人短视频| 第一社区sis001原创亚洲| 国产免费专区| 国产精品一久久香蕉国产线看观看| 亚洲男人天堂av| 中文字幕亚洲影视| 91在线九色porny| 国产美女直播视频一区| 五月天网站亚洲| 好看的日韩av电影| 激情在线小视频| 偷拍视频一区二区| 亚洲娇小xxxx欧美娇小| 久久国产精品色婷婷| 欧美大片免费高清观看| 国产原创中文在线观看| 九九热精品视频| 1024成人网| 欧美在线国产| 性xxxxfjsxxxxx欧美| 99亚洲精品视频| 日韩一区二区av| 国产精品成人一区二区艾草| 免费看成人哺乳视频网站| fc2ppv完全颜出在线播放| 国产精品福利片| 欧美视频一区二区三区在线观看 | 色综合手机在线| 国产91精品最新在线播放| 精品露脸国产偷人在视频| 欧美福利专区| 啊啊啊久久久| 精品国产免费av| 国产成人精品日本亚洲专区61| 狠狠干狠狠久久| 日韩在线一区二区三区| 成人日韩av| 久久国产情侣| 免费中文日韩| 日韩三级成人av网| 亚洲综合视频在线| 亚久久调教视频| 国产精品**亚洲精品| 亚洲色图图片网| 色呦呦网站入口| 国产91ⅴ在线精品免费观看| 欧美精品xxxxbbbb|