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

Docker 底層原理淺析

開發 開發工具
容器的實質是進程,與宿主機上的其他進程是共用一個內核,但與直接在宿主機執行的進程不同,容器進程運行在屬于自己的獨立的命名空間。命名空間隔離了進程間的資源,使得 a,b 進程可以看到 S 資源,而 c 進程看不到。

 [[350604]]

作者:vitovzhong,騰訊 TEG 應用開發工程師

容器的實質是進程,與宿主機上的其他進程是共用一個內核,但與直接在宿主機執行的進程不同,容器進程運行在屬于自己的獨立的命名空間。命名空間隔離了進程間的資源,使得 a,b 進程可以看到 S 資源,而 c 進程看不到。

1. 演進

對于統一開發、測試、生產環境的渴望,要遠遠早于 docker 的出現。我們先來了解一下在 docker 之前出現過哪些解決方案。

1.1 vagrant

Vagarant 是筆者最早接觸到的一個解決環境配置不統一的技術方案。它使用 Ruby 語言編寫,由 HashCorp 公司在 2010 年 1 月發布。Vagrant 的底層是虛擬機,最開始選用的是 virtualbox。一個個已經配置好的虛擬機被稱作 box。用戶可自由在虛擬機內部的安裝依賴庫和軟件服務,并將 box 發布。通過簡單的命令,就能夠拉取 box,將環境搭建起來。

  1. // 拉取一個ubuntu12.04的box 
  2. $ vagrant init hashicorp/precise32 
  3.  
  4. // 運行該虛擬機 
  5. $ vagrant up 
  6.  
  7. // 查看當前本地都有哪些box 
  8. $ vagrant box list 

如果需要運行多個服務,也可以通過編寫 vagrantfile,將相互依賴的服務一起運行,頗有如今 docker-compose 的味道。

  1. config.vm.define("web") do |web|web.vm.box = "apache" 
  2. end 
  3. config.vm.define("db") do |db|db.vm.box = "mysql” 
  4. end 

 

1.2 LXC (LinuX Container)

 

在 2008 年,Linux 2.6.24 將 cgroups 特性合入了主干。Linux Container 是 Canonical 公司基于 namespace 和 cgroups 等技術,瞄準容器世界而開發的一個項目,目標就是要創造出運行在 Linux 系統中,并且隔離性良好的容器環境。當然它最早也就見于 Ubuntu 操作系統上。

2013 年,在 PyCon 大會上 Docker 正式面世。當時的 Docker 是在 Ubuntu 12.04 上開發實現的,只是基于 LXC 之上的一個工具,屏蔽掉了 LXC 的使用細節(類似于 vagrant 屏蔽了底層虛擬機),讓用戶可以一句 docker run 命令行便創建出自己的容器環境。

2. 技術發展

容器技術是操作系統層面的虛擬化技術,可以概括為使用 Linux 內核的 cgroup,namespace 等技術,對進程進行的封裝隔離。早在 Docker 之前,Linux 就已經提供了今天的 Docker 所使用的那些基礎技術。Docker 一夜之間火爆全球,但技術上的積累并不是瞬間完成的。我們摘取其中幾個關鍵技術節點進行介紹。

 

2.1 Chroot

軟件主要分為系統軟件和應用軟件,而容器中運行的程序并非系統軟件。容器中的進程實質上是運行在宿主機上,與宿主機上的其他進程共用一個內核。而每個應用軟件運行都需要有必要的環境,包括一些 lib 庫依賴之類的。所以,為了避免不同應用程序的 lib 庫依賴沖突,很自然地我們會想是否可以把他們進行隔離,讓他們看到的庫是不一樣的。基于這個樸素的想法,1979 年, chroot 系統調用首次問世。來舉個例子感受一下。在 devcloud 上申請的云主機,現在我的 home 目錄下準備好了一個 alpine 系統的 rootfs,如下:

 

在該目錄下執行:

  1. chroot rootfs/ /bin/bash 

然后將/etc/os-release 打印出來,就看到是”Alpine Linux”,說明新運行的 bash 跟 devcloud 主機上的 rootfs 隔離了。

 

2.1 Namespace

簡單來說 namespace 是由 Linux 內核提供的,用于進程間資源隔離的一種技術,使得 a,b 進程可以看到 S 資源;而 c 進程看不到。它是在 2002 年 Linux 2.4.19 開始加入內核的特性,到 2013 年 Linux 3.8 中 user namespace 的引入,對于我們現在所熟知的容器所需的全部 namespace 就都實現了。

Linux 提供了多種 namespace,用于對多種不同資源進行隔離。容器的實質是進程,但與直接在宿主機執行的進程不同,容器進程運行在屬于自己的獨立的命名空間。因此容器可以擁有自己的 root 文件系統、自己的網絡配置、自己的進程空間,甚至自己的用戶 ID 空間。

還是來看一個簡單的例子,讓我們有個感性認識,namespace 到底是啥,在哪里能直觀的看到。在 devcloud 云主機上,執行:ls-l /proc/self/ns 看到的就是當前系統所支持的 namespace。

 

接著我們使用 unshare 命令,運行一個 bash,讓它不使用當前的 pid namespace:

  1. unshare --pid --fork --mount-proc bash 

然后運行: ps -a 看看當前 pid namespace 下的進程都有哪些:

 

在新起的 bash 上執行:ls -l /proc/self/ns, 發現當前 bash 的 pid namespace 與之前是不相同的。

 

既然 docker 就是基于內核的 namespace 特性來實現的,那么我們可以簡單來認證一下,執行指令:

  1. docker run –pid host --rm -it alpine sh 

運行一個簡單的 alpine 容器,讓它與主機共用同一個 pid namespace。然后在容器內部執行指令 ps -a 會發現進程數量與 devcloud 機器上的一樣;執行指令 ls -l /proc/self/ns/ 同樣會看到容器內部的 pid namespace 與 devcloud 機器上的也是一樣。

2.2 cgroups

cgroups 是 namespace 的一種,是為了實現虛擬化而采取的資源管理機制,決定哪些分配給容器的資源可被我們管理,分配容器使用資源的多少。容器內的進程是運行在一個隔離的環境里,使用起來,就好像是在一個獨立于宿主的系統下操作一樣。這種特性使得容器封裝的應用比直接在宿主運行更加安全。例如可以設定一個 memory 使用上限,一旦進程組(容器)使用的內存達到限額再申請內存,就會出發 OOM(out of memory),這樣就不會因為某個進程消耗的內存過大而影響到其他進程的運行。

還是來看個例子感受一下。在 devcloud 機器上運行一個 apline 容器,限制只能使用前 2 個 CPU 且只能使用 1.5 個核:

  1. docker run --rm -it --cpus "1.5" --cpuset-cpus 0,1 alpine 

然后再開啟一個新的終端,先看看系統上有哪些資源是我們可以控制的:

  1. cat /proc/cgroups 

 

最左邊一側就是可以設置的資源了。接著我們需要找到這些控制資源分配的信息都放在哪個目錄下:

  1. mount | grep cgroup 

 

然后我們找到剛剛運行的 alpine 鏡像的 cgroups 配置:

  1. cat /proc/`docker inspect --format='{{.State.Pid}}' $(docker ps -ql)`/cgroup 

 

這樣,把二者拼接起來,就可以看到這個容器的資源配置了。我們先來驗證 cpu 的用量是否是 1.5 個核:

  1. cat /sys/fs/cgroup/cpu,cpuacct/docker/c1f68e86241f9babb84a9556dfce84ec01e447bf1b8f918520de06656fa50ab4/cpu.cfs_period_us 

輸出 100000,可以認為是單位,然后再看配額:

  1. cat /sys/fs/cgroup/cpu,cpuacct/docker/c1f68e86241f9babb84a9556dfce84ec01e447bf1b8f918520de06656fa50ab4/cpu.cfs_quota_us 

輸出 150000,與單位相除正好是設置的 1.5 個核,接著驗證是否使用的是前兩個核心:

  1. cat /sys/fs/cgroup/cpuset/docker/c1f68e86241f9babb84a9556dfce84ec01e447bf1b8f918520de06656fa50ab4/cpuset.cpus 

輸出 0-1。

目前來看,容器的資源配置都是按照我們設定的來分配的,但實際真能在 CPU0-CPU1 上限制使用 1.5 個核嗎?我們先看一下當前 CPU 的用量:

  1. docker stats $(docker ps -ql) 

 

因為沒有在 alpine 中運行程序,所以 CPU 用量為 0,我們現在回到最開始執行 docker 指令的 alpine 終端,執行一個死循環:

  1. i=0; while true; do i=i+i; done 

再來觀察當前的 CPU 用量:

 

接近 1,但為啥不是 1.5?因為剛剛運行的死循環只能跑在一個核上,所以我們再打開一個終端,進入到 alpine 鏡像中,同樣執行死循環的指令,看到 CPU 用量穩定在了 1.5,說明資源的使用量確實是限制住了的。

 

現在我們對 docker 容器實現了進程間資源隔離的黑科技有了一定認識。如果單單就隔離性來說,vagrant 也已經做到了。那么為什么是 docker 火爆全球?是因為它允許用戶將容器環境打包成為一個鏡像進行分發,而且鏡像是分層增量構建的,這可以大大降低用戶使用的門檻。

3. 存儲

Image 是 Docker 部署的基本單位,它包含了程序文件,以及這個程序依賴的資源的環境。Docker Image 是以一個 mount 點掛載到容器內部的。容器可以近似理解為鏡像的運行時實例,默認情況下也算是在鏡像層的基礎上增加了一個可寫層。所以,一般情況下如果你在容器內做出的修改,均包含在這個可寫層中。

3.1 聯合文件系統(UFS)

Union File System 從字面意思上來理解就是“聯合文件系統”。它將多個物理位置不同的文件目錄聯合起來,掛載到某一個目錄下,形成一個抽象的文件系統。

 

如上圖,從右側以 UFS 的視角來看,lowerdir 和 upperdir 是兩個不同的目錄,UFS 將二者合并起來,得到 merged 層展示給調用方。從左側的 docker 角度來理解,lowerdir 就是鏡像,upperdir 就相當于是容器默認的可寫層。在運行的容器中修改了文件,可以使用 docker commit 指令保存成為一個新鏡像。

3.2 Docker 鏡像的存儲管理

有了 UFS 的分層概念,我們就很好理解這樣的一個簡單 Dockerfile:

  1. FROM alpine 
  2. COPY foo /foo 
  3. COPY bar /bar 

在構建時的輸出所代表的含義了。

 

 

 

但是使用 docker pull 拉取的鏡像文件,在本地機器上存儲在哪,又是如何管理的呢?還是來實際操作認證一下。在 devcloud 上確認當前 docker 所使用的存儲驅動(默認是 overlay2):

  1. docker info --format '{{.Driver}}' 

以及鏡像下載后的存儲路徑(默認存儲在/var/lib/docker):

  1. docker info --format '{{.DockerRootDir}}' 

當前我的 docker 修改了默認存儲路徑,配置到/data/docker-data,我們就以它為例進行展示。先查看一下該目錄下的結構:

  1. tree -L 1 /data/docker-data 

 

關注一下其中的 image 和 overlay2 目錄。前者就是存放鏡像信息的地方,后者則是存放具體每一分層的文件內容。我們先深入看一下 image 目錄結構:

  1. tree -L 2 /data/docker-data/image/ 

 

留心這個 imagedb 目錄,接下來以我們以最新的 alpine 鏡像為例子,看看 docker 是如何管理鏡像的。執行指令:

  1. docker pull alpine:latest 

 

緊接著查看它的鏡像 ID:docker image ls alpine:latest

 

記住這個 ID a24bb4013296,現在可以看一下 imagedb 目錄下的變化:

  1. tree -L 2 /data/docker-data/image/overlay2/imagedb/content/ | grep 
  2. a24bb4013296 

 

多了這么一個鏡像 ID 的文件,它是一個 json 格式的文件,這里包含了該鏡像的參數信息:

  1. jq . 
  2. /data/docker-data/image/overlay2/imagedb/content/sha256/a24bb4013296f61e89ba57005a7b3e52274d8edd3ae2077d04395f806b63d83e 

 

接下來我們看看將一個鏡像運行起來之后會有什么變化。運行一個 alpine 容器,讓它 sleep10 分鐘:

  1. docker run --rm -d alpine sleep 600 

然后找到它的 overlay 掛載點:

  1. docker inspect --format='{{.GraphDriver.Data}}' $(docker ps -ql) | grep MergedDir 

 

結合上一節講到的 UFS 文件系統,可以 ls 一下:

  1. ls /data/docker-data/overlay2/74e92699164736980c9e20475388568f482671625a177cb946c4b136e4d94a64/merged 

 

看到它就是合并后所呈現在 alpine 容器的文件系統。先進入到容器內:

  1. docker exec -it $(docker ps -ql) sh 

緊接著新開一個終端查看容器運行起來后跟鏡像相比,有哪些修改:

  1. docker diff $(docker ps -ql) 

 

在/root 目錄下,增加了 sh 的歷史記錄文件。然后我們在容器中手動增加一個 hello.txt 文件:

  1. echo 'Hello Docker' > hello.txt 

 

這時候來看看容器默認在鏡像之上增加的可寫層 UpperDir 目錄的變化:

  1. ls /data/docker-data/overlay2/74e92699164736980c9e20475388568f482671625a177cb946c4b136e4d94a64/diff 

 

這就認證了 overlay2 驅動是將鏡像和可寫層的內容 merged 之后,供容器作為文件系統使用。多個運行的容器共用一份基礎鏡像,而各自有獨立的可寫層,節省了存儲空間。

這個時候,我們也可以回答一下鏡像的實際內容是存儲在哪里呢:

  1. cat /data/docker-data/overlay2/74e92699164736980c9e20475388568f482671625a177cb946c4b136e4d94a64/lower 

 

查看這些分層:

  1. ls /data/docker-data/overlay2/l/ZIIZFSQUQ4CIKRNCMOXXY4VZHY/ 

 

 

就是 UFS 中低層的鏡像內容。

總結

這一次跟大家分享了 Docker 所使用的底層技術,包括 namespace,cgroups 和 overlay2 聯合文件系統,著重介紹了隔離環境是如何在宿主機上演進實現的。通過實際手動操作,對這些概念有了真實的感受。希望下一次為大家再介紹 docker 的網絡實現機制。

【本文為51CTO專欄作者“騰訊技術工程”原創稿件,轉載請聯系原作者(微信號:Tencent_TEG)】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2023-02-12 23:23:30

2019-10-16 16:33:41

Docker架構語言

2024-06-13 00:54:19

2021-12-01 06:50:50

Docker底層原理

2020-08-05 08:21:41

Webpack

2023-05-11 07:25:57

ReduxMiddleware函數

2009-07-16 10:23:30

iBATIS工作原理

2023-01-04 07:54:03

HashMap底層JDK

2024-01-05 09:00:00

SpringMVC軟件

2021-01-27 18:15:01

Docker底層宿主機

2014-11-26 10:44:33

DockerOpenStack云計算

2019-08-05 13:20:35

Android繪制代碼

2011-04-13 15:01:39

2022-06-09 15:53:16

移動端渲染GPU

2010-09-25 14:01:11

Java跨平臺

2023-10-18 10:55:55

HashMap

2022-12-19 08:00:00

SpringBootWeb開發

2021-07-05 07:51:43

JVM底層Python

2021-07-23 13:34:50

MySQL存儲InnoDB

2011-04-29 12:54:14

筆記本
點贊
收藏

51CTO技術棧公眾號

国产精品1区2区| 亚洲国产欧美国产第一区| 久久久不卡网国产精品一区| 亲子乱一区二区三区电影| 久久亚洲AV无码专区成人国产| 丁香婷婷久久| 一区二区三区欧美日韩| 欧美日本亚洲| 国产精品自拍电影| 宅男噜噜噜66一区二区| 日韩中文字幕在线看| 日本xxxx免费| 日韩成人亚洲| 亚洲 欧美综合在线网络| 亚洲精品第一区二区三区| 国内精品久久久久久久久久久| 一区二区福利| 欧美另类第一页| 国产熟女一区二区| 超碰精品在线| 在线电影欧美成精品| 免费在线a视频| a级影片在线观看| 久久久另类综合| 成人18视频| 在线免费观看日韩视频| 亚洲综合99| 久久99视频精品| 亚洲熟女毛茸茸| 精品一区在线| 亚洲精品99久久久久中文字幕| 亚洲男人天堂av在线| 中文字幕在线中文字幕在线中三区| 亚洲日韩欧美一区二区在线| 日本公妇乱淫免费视频一区三区| 免费观看的毛片| 国内精品不卡| 丝袜美腿综合| 日韩欧美亚洲国产精品字幕久久久| 日韩在线第三页| 在线黄色的网站| 亚洲高清免费在线| 亚洲五码在线观看视频| 男人的天堂在线视频免费观看| 91麻豆国产在线观看| 动漫精品视频| 亚洲国产精品久久久久久6q| 国产一区二区毛片| 91视频国产高清| 一本一道精品欧美中文字幕| 免费高清不卡av| 国产91在线高潮白浆在线观看| 羞羞影院体验区| 夜夜精品视频| 91精品国产99| 国产无码精品一区二区| 日韩午夜av在线| 午夜精品免费视频| 日韩成人免费在线观看| 亚洲性图久久| 性色av一区二区三区红粉影视| 久久精品99国产精| 激情久久久久久久| 97婷婷涩涩精品一区| 日韩精品一区二区三区国语自制| 在线观看的日韩av| 国内免费久久久久久久久久久| 国产精品二区一区二区aⅴ| 影音先锋久久久| 韩国精品久久久999| 日本a在线观看| 国产日韩欧美| 国产精品69久久| 在线观看国产小视频| 免费高清视频精品| 亚洲va欧美va国产综合久久| 精品国产九九九| 国产不卡在线一区| 久久综合狠狠综合久久综青草| 男人的天堂在线| 欧美国产日本视频| 国产欧美自拍视频| www.youjizz.com在线| 天天操天天综合网| 亚洲高清在线免费观看| 曰本一区二区| 欧美精品一区二区久久久| 黄色国产在线观看| 精品免费一区二区| 欧美成人免费观看| 国产精品久久久久久久久久久久久久久久久| 久久精品二区三区| 91精品免费看| 蜜桃av中文字幕| 国产欧美久久久精品影院| 手机福利在线视频| 三级中文字幕在线观看| 欧美精品一级二级三级| 日本一区二区免费视频| 国产在线日韩精品| 欧美福利视频网站| 黄色av一区二区| 国产东北露脸精品视频| 欧美人xxxxx| 中文字幕中文字幕在线中高清免费版 | 亚洲色欧美另类| 国产精品毛片大码女人| 18黄暴禁片在线观看| 欧美aaa视频| 欧美成人国产一区二区| 国产1区2区在线观看| 国产一区美女| 国产精品欧美亚洲777777| 亚洲精品久久久狠狠狠爱| 中文在线一区二区| 成人午夜免费在线| 99综合久久| 日韩成人在线网站| 国产一区二区视频在线观看免费| 国产一级一区二区| 99视频网站| 无遮挡的视频在线观看| 日韩欧美第一页| 国产精品二区视频| 99久久久久国产精品| 欧美在线亚洲一区| 亚洲精品国偷拍自产在线观看蜜桃| 中文字幕精品一区二区精品绿巨人 | 欧美成免费一区二区视频| 91精品国产99| 欧日韩在线视频| 亚洲最新在线观看| 999热精品视频| 成人久久电影| 日本精品久久久久影院| 日批免费在线观看| 亚洲一区二区三区在线看| 九九九九九九九九| 久久婷婷蜜乳一本欲蜜臀| 国产91色在线| 日中文字幕在线| 天天综合天天做天天综合| 亚洲一二三四五| 综合在线视频| 91九色国产社区在线观看| 成人三级黄色免费网站| 欧美专区亚洲专区| 国产人妻一区二区| 香蕉视频成人在线观看| 久久综合久久综合这里只有精品| 草草在线观看| 亚洲精品理论电影| 久久久国产精品成人免费| 91在线观看污| 北条麻妃在线观看| 亚洲电影男人天堂| 热久久99这里有精品| 男人的天堂av高清在线| 日本精品一区二区三区高清| 韩国女同性做爰三级| 日韩影院精彩在线| 久久久综合亚洲91久久98| 国产伦理精品| 亚洲人成网站999久久久综合| 中文字幕69页| 国产亚洲综合在线| 狠狠热免费视频| 日韩欧美伦理| 5566av亚洲| 成人黄色动漫| 亚洲色图美腿丝袜| 国产精品伦理一区| 亚洲一区二区三区四区不卡| 日韩精品视频一区二区| 亚洲专区一区| 一区二区三区av| 欧美三级一区| 青青草一区二区| 天堂а√在线资源在线| 欧美白人最猛性xxxxx69交| 国产在线视频你懂的| 久久综合九色综合欧美就去吻 | 伊伊综合在线| 国产一区二区久久精品| 国产又黄又粗又硬| 午夜精品久久久久久久久久| 丰满少妇高潮一区二区| 精品在线观看免费| www.av片| 欧美性感美女一区二区| 91中文字幕在线| 少妇淫片在线影院| 这里只有视频精品| 精品人妻午夜一区二区三区四区 | 亚洲不卡在线| 5566日本婷婷色中文字幕97| √天堂资源地址在线官网| 日韩视频一区在线观看| 黄色一级视频免费看| 亚洲天堂久久久久久久| 三级黄色片网站| 久久er精品视频| 免费国产黄色网址| 91成人国产| 欧美综合激情| 天堂精品久久久久| 国产精品精品视频| 国产探花视频在线观看| 国产亚洲视频在线观看| 国产刺激高潮av| 欧美久久久久中文字幕| 中文字幕免费在线观看视频| 亚洲欧美日韩久久| 97人妻精品一区二区免费| 国产成人精品亚洲日本在线桃色 | 影视一区二区三区| 欧美激情精品久久久久久蜜臀| 国产三级在线| 亚洲国产天堂网精品网站| 亚洲天堂一二三| 黑人巨大精品欧美一区免费视频| 青青草原免费观看| 国产精品久久毛片a| 国产三级视频网站| 成人高清av在线| 色黄视频免费看| 美女在线视频一区| 欧美三级午夜理伦三级| 1024成人| av片在线免费| 亚洲区综合中文字幕日日| 日韩久久不卡| 亚洲小说图片| 久久精品五月婷婷| 国语一区二区三区| 成人av免费电影| 欧美黄视频在线观看| 亚洲free性xxxx护士白浆| 国语自产精品视频在线看抢先版结局 | 欧美精品v国产精品v日韩精品| 无码人妻丰满熟妇精品区| 福利视频导航一区| 欧美一级视频免费观看| 午夜伦理一区二区| 日韩三级av在线| 午夜激情久久久| 五月婷婷激情网| 性久久久久久久久久久久 | 欧美性猛交xxxx黑人| www.国产高清| 欧美视频第一页| 亚洲天堂一区在线| 欧美日韩中文字幕| 丁香社区五月天| 欧美在线你懂得| 欧美激情一区二区三区免费观看| 在线一区二区视频| 在线观看不卡的av| 91精品婷婷国产综合久久竹菊| 国产又大又黄又爽| 日韩三区在线观看| 亚洲乱熟女一区二区| 精品国产乱码久久久久久免费| 韩国av免费在线| 亚洲精品永久免费| 成人激情电影在线看| 久久精品99国产精品酒店日本| 国产激情在线观看| 欧美激情亚洲激情| 蜜桃视频在线网站| 国产精品国产三级国产aⅴ9色| 日韩一区精品| 亚洲一区二区三区成人在线视频精品| 久久69av| 国产精品日韩高清| 一区二区美女| 一本久久a久久精品vr综合| 亚洲天天影视网| 91黄色在线看| 美女国产精品| 色天使在线观看| 成人中文字幕合集| 国产精品无码久久久久一区二区| 国产精品婷婷午夜在线观看| 青青草原在线免费观看| 亚洲高清久久久| 国产主播第一页| 日韩一级完整毛片| 黄色片视频在线观看| 日韩视频免费在线| 咪咪网在线视频| 成人欧美在线观看| 色综合www| 亚洲欧美一二三| 国产日韩欧美在线播放不卡| 天堂一区在线观看| 成人av午夜电影| 黄色三级生活片| 亚洲国产人成综合网站| 性高潮视频在线观看| 欧美mv日韩mv国产网站app| 国产专区在线| 欧美精品久久久久久久免费观看| 偷拍中文亚洲欧美动漫| 97伦理在线四区| 日韩av在线播放网址| 精品久久一二三| 国产在线日韩欧美| 无码国产69精品久久久久同性| 亚洲精品视频在线观看网站| 国产www在线| 欧美va天堂va视频va在线| yourporn在线观看中文站| 久久久中文字幕| 99久久久国产| 深夜福利成人| 在线亚洲观看| 真实乱偷全部视频| 国产精品成人一区二区三区夜夜夜| 日本熟伦人妇xxxx| 91精品国产高清一区二区三区蜜臀| 激情综合闲人网| 91超碰中文字幕久久精品| 亚洲超碰在线观看| 在线看成人av电影| 首页国产欧美久久| 中文字幕一区三区久久女搜查官| 综合电影一区二区三区| 真实的国产乱xxxx在线91| 日韩精品一区二区三区第95| 福利小视频在线| 91在线播放国产| 天天揉久久久久亚洲精品| 男人女人黄一级| 久久九九久精品国产免费直播| 中文字幕在线字幕中文| 精品国产一区久久| av在线网址观看| 92看片淫黄大片看国产片| 国产精品二区不卡| 欧美男女交配视频| 国产精品视频线看| 综合久久中文字幕| 亚洲午夜精品久久久久久久久久久久| 一级毛片久久久| 久久精品日产第一区二区三区精品版| 9久re热视频在线精品| 国产美女视频免费观看下载软件| 亚洲国产精品久久一线不卡| 午夜精品久久久久久久99| 欧美大秀在线观看| 国产精品中文字幕制服诱惑| 国产精品国产三级国产专区51| 国产成人精品网址| 精品一区二区三区人妻| 亚洲福利视频免费观看| 国产夫妻在线播放| 久久久7777| 久久久精品五月天| 精品人妻一区二区三区四区| 欧美亚洲动漫精品| 日本中文字幕视频在线| 91人人爽人人爽人人精88v| 欧美另类视频| 性农村xxxxx小树林| 精品福利一区二区| 黄色影院在线播放| 91精品久久久久久久久久久久久久| 一区二区电影在线观看| 韩国黄色一级片| 欧美性xxxx极品hd满灌| 国产黄在线播放| 成人黄色av免费在线观看| 欧美a级在线| jizz欧美性20| 精品视频一区二区三区免费| 超碰免费在线播放| 国产一区精品视频| 日本欧美大码aⅴ在线播放| 天堂网中文在线观看| 日韩欧美色电影| 欧美舌奴丨vk视频| 国产精品波多野结衣| 成人午夜短视频| 五月激情丁香网| 欧美成人一区二区三区电影| 欧美变态网站| 日本中文字幕高清| 一区二区久久久| 九色视频在线播放| 亚洲综合av影视| 亚洲女人av| www.色小姐com| 亚洲色图色老头| 1313精品午夜理伦电影| 国产日产欧美视频| 亚洲欧美另类久久久精品 | 日韩不卡在线视频| 白嫩少妇丰满一区二区| 一区二区三区中文字幕电影 |