精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲国产视频在线| 久久99久久久欧美国产| 精品网站999www| 亚洲人成无码www久久久| 欧洲亚洲在线| 精彩视频一区二区| 国内精品久久久久久| 欧美日韩高清丝袜| 精品国产亚洲一区二区三区在线| 午夜婷婷国产麻豆精品| 日韩在线三级| www.成人免费视频| 久久精品麻豆| 欧美高清视频在线观看| 性高潮久久久久久久| 免费观看亚洲天堂| 色999日韩国产欧美一区二区| 中文字幕中文字幕在线中一区高清| 超碰人人人人人人| 日本不卡123| 午夜免费久久久久| 久久精品一区二区三区四区五区| 激情视频极品美女日韩| 欧美久久一区二区| 成 年 人 黄 色 大 片大 全| 天堂资源在线中文| 26uuu另类欧美| 91精品天堂| 一本色道久久综合精品婷婷 | 亚洲国产精品嫩草影院久久| 国产成人黄色网址| 欧美男人天堂| 亚洲一级不卡视频| 中文字幕一区二区三区精彩视频| 日韩av免费观影| 成人av在线资源网站| 成人午夜在线观看| 依依成人在线视频| 日韩精品亚洲专区| 97欧美精品一区二区三区| 日韩a级片在线观看| 日本在线电影一区二区三区| 亚洲精品影视在线观看| 亚洲免费观看在线| 日韩区欧美区| 日韩精品专区在线影院重磅| 亚洲成人天堂网| 日韩在线影院| 色欧美片视频在线观看在线视频| www.在线观看av| av免费在线观| 亚洲人被黑人高潮完整版| 亚洲综合首页| 麻豆tv入口在线看| 国产精品电影院| 一本一本久久a久久精品综合妖精| 暖暖视频在线免费观看| 久久只精品国产| 欧美18视频| 九色蝌蚪在线| 国产日产欧美一区| 亚洲v欧美v另类v综合v日韩v| 国产黄色片在线播放| 国产欧美精品一区二区色综合| 欧美激情专区| www.亚洲.com| 成人欧美一区二区三区在线播放| 一区二区不卡视频| 国产精品久久久久久福利| 中文字幕日韩欧美一区二区三区| 亚洲综合激情五月| 成人免费观看视频大全| 亚洲一区中文日韩| 男人添女人下面高潮视频| 天堂中文在线播放| 在线观看亚洲专区| 污网站在线免费| 免费看日产一区二区三区| 欧美xxxxxxxxx| 一级国产黄色片| 精品美女久久久| 日韩色av导航| 国产一级视频在线播放| 午夜亚洲性色视频| 国产精品国产三级国产aⅴ浪潮| 中文字幕无线码一区| 国产乱码精品一区二区三区av | 国产精品久久久久久亚洲毛片| 伊人久久大香线蕉精品| 天堂av资源在线观看| 精品久久久香蕉免费精品视频| 欧美日韩在线成人| 成人影院网站ww555久久精品| 欧美va亚洲va在线观看蝴蝶网| 国产精品久久无码| 成人影视亚洲图片在线| 欧美激情xxxxx| www.五月婷婷.com| 国产黄色成人av| 免费观看成人高| 国产91在线视频蝌蚪| 狠狠躁夜夜躁人人躁婷婷91| 国产视频1区2区3区| 成人福利一区| 色综合亚洲精品激情狠狠| 国产一级特黄a高潮片| 日本午夜精品一区二区三区电影| 亚洲最大福利网站| 欧美老女人性开放| 一区二区三区国产| 中文字幕有码av| 欧美在线导航| 欧美成人中文字幕在线| 免费看污视频的网站| 成人夜色视频网站在线观看| 亚洲v国产v| 日韩深夜视频| 精品裸体舞一区二区三区| 91狠狠综合久久久久久| 一区二区三区福利| 91在线观看免费高清| 国产成人天天5g影院在线观看| 亚洲一二三四区不卡| 国产精品嫩草影院8vv8| 精品国产aⅴ| 欧美另类精品xxxx孕妇| 亚洲一级黄色大片| 国产日本亚洲高清| 无码播放一区二区三区| avtt综合网| 在线播放日韩av| 国产精品久久久免费视频| 国产精品一区不卡| 熟妇熟女乱妇乱女网站| 久久久久黄色| 伊人精品在线观看| 国产91国语对白在线| 国产成人免费视频一区| 国产系列第一页| 欧美91在线|欧美| 亚洲欧洲黄色网| 国产精品21p| 91丨九色porny丨蝌蚪| 久久综合久久网| 午夜免费欧美电影| 九九久久国产精品| 国产成人麻豆精品午夜在线| 亚洲人一二三区| 伊人色在线视频| 久久久久久久久国产一区| 国产区亚洲区欧美区| www.中文字幕久久久| 欧美日韩一级二级三级| 久久久久久久久福利| 奇米777欧美一区二区| 日韩久久精品一区二区三区| 欧美成a人片在线观看久| 亚洲区免费影片| 久久精品五月天| 中文字幕免费不卡| 亚洲国产日韩欧美在线观看| 久久福利影院| 亚洲aⅴ日韩av电影在线观看 | 一个色综合久久| 国产精品国产三级国产在线观看 | 18岁网站在线观看| 欧美一级三级| 国产精品成人在线| 五月天婷婷在线视频| 日韩一级成人av| 国产亚洲自拍av| 91在线观看高清| chinese少妇国语对白| 日韩激情一区| 亚洲一区二区免费| 国产丝袜在线观看视频| 亚洲精品久久久久| 国内av在线播放| 亚洲天堂成人网| 影音先锋资源av| 视频在线观看一区二区三区| 香蕉久久夜色| 午夜视频一区二区在线观看| 51精品国产黑色丝袜高跟鞋| 国内在线精品| 欧美一区二区三区视频免费播放 | 黄网页在线观看| 精品国产伦一区二区三区观看体验| 亚洲黄色一区二区| 国产免费成人在线视频| 久久精品一二三四| 午夜在线视频一区二区区别| 一本一道久久a久久综合精品| 亚洲精品不卡在线观看| 欧洲成人性视频| 菠萝菠萝蜜在线观看| 亚洲欧美精品伊人久久| 国产精品国产三级国产aⅴ| 亚洲va国产va欧美va观看| av电影网站在线观看| 国产精品2024| caoporn超碰97| 欧美午夜电影在线观看| 天天人人精品| 国产欧美一区二区三区米奇| 国产精品看片资源| 黄在线观看免费网站ktv| 日韩视频一区在线| 激情福利在线| 精品1区2区在线观看| 亚洲在线免费观看视频| 婷婷国产在线综合| 视频这里只有精品| 久久久久久**毛片大全| 国产乱国产乱老熟300部视频| 男女激情视频一区| 1024av视频| 极品少妇一区二区三区| 国产精品av免费| 精品日产免费二区日产免费二区| 国产伦精品一区二区三区免| 欧美暴力调教| 欧美在线欧美在线| 男女羞羞视频在线观看| 久久精品国产成人精品| 国产高清视频在线播放| 亚洲激情视频在线| 亚洲免费不卡视频| 91精品久久久久久久99蜜桃 | 欧美日韩一区三区| 国产免费一区二区三区四区五区| 亚洲超碰97人人做人人爱| 美女福利视频在线观看| 成人欧美一区二区三区黑人麻豆 | 成人国产精品久久久久久亚洲| 中文一区一区三区高中清不卡免费| 欧美激情性做爰免费视频| 国产三区视频在线观看| 日韩中文字幕视频在线观看| 国产精品麻豆一区二区三区| 日韩精品视频免费专区在线播放| 国产91绿帽单男绿奴| 欧美va在线播放| 噜噜噜久久,亚洲精品国产品| 日韩欧美中文一区| 国产黄色大片网站| 欧美一区二区三区婷婷月色| 国产伦理一区二区| 欧美一区二区黄| 99久久久无码国产精品免费| 欧美一区二区精品久久911| 国产黄色大片网站| 亚洲成人激情在线观看| 人妻与黑人一区二区三区| 亚洲国产欧美一区二区丝袜黑人 | 成人欧美一区二区三区白人| 国产在线免费av| 国产精品久久久久久久久久久免费看| 99精品欧美一区二区| 欧美韩国日本不卡| 萌白酱视频在线| 亚洲乱码国产乱码精品精的特点| 日本aⅴ在线观看| 亚洲一区国产视频| 日韩免费视频一区二区视频在线观看| 国产精品日韩高清| 欧美jizzhd69巨大| 精品国产自在精品国产浪潮 | 欧美成人国产va精品日本一级| av在线看片| 欧美高清性猛交| 亚洲电影观看| 国产精品影片在线观看| 国产精品一区二区精品视频观看| 91亚洲国产成人精品性色| 91精品久久久久久综合五月天 | 国产精品扒开腿做爽爽爽的视频| 素人啪啪色综合| 1卡2卡3卡精品视频| 激情视频极品美女日韩| 日韩免费av一区二区三区| 久久美女视频| 农民人伦一区二区三区| 久久综合图片| 亚洲av无一区二区三区久久| 91麻豆国产精品久久| 日韩av片在线免费观看| 亚洲成av人影院| 中文文字幕一区二区三三| 91精品国产乱码| 色av男人的天堂免费在线| 中文字幕日韩欧美精品在线观看| 97caopron在线视频| 欧美一区二区三区艳史| 四虎影视国产精品| 久久精品午夜一区二区福利| 日本在线电影一区二区三区| 国产美女在线一区| 奇米精品一区二区三区在线观看一| 日韩欧美中文视频| 国产色产综合色产在线视频| 丰满少妇高潮久久三区| 在线视频欧美精品| 国产91麻豆视频| 综合av色偷偷网| 欧美激情20| 91手机在线视频| 日韩大片在线| 美女福利视频在线| 国产白丝网站精品污在线入口| 亚洲黄色小说视频| 午夜影院久久久| www.国产欧美| 日韩在线观看免费高清完整版| 亚洲福利影院| 国产欧美一区二区在线播放| 香港欧美日韩三级黄色一级电影网站| 日韩国产欧美亚洲| 国产成人免费视频网站| 国产一区二区三区视频播放| 色综合中文综合网| 欧美一级视频免费| 欧美精品日韩www.p站| 国产成人福利夜色影视| 欧美久久电影| 国产视频一区三区| 黄色性视频网站| 亚洲欧美二区三区| 亚洲天堂狠狠干| 亚洲性无码av在线| 美女100%一区| 久久综合九色欧美狠狠| 亚洲一区二区毛片| 漂亮人妻被黑人久久精品| 亚洲主播在线播放| 国产xxxxxx| 欧美老少配视频| 亚洲精品黑牛一区二区三区| 看一级黄色录像| 国产米奇在线777精品观看| 五月天婷婷丁香网| 欧美美女一区二区| 91在线直播| 国产精品中文字幕在线| 第一社区sis001原创亚洲| 性chinese极品按摩| 国产精品毛片久久久久久| 中文字幕一区二区三区免费看| 国产亚洲成精品久久| 日本在线精品| 亚洲精品中文字幕在线| 毛片av一区二区三区| 一二三四在线观看视频| 欧美日韩精品系列| 国产乱色在线观看| 97久久夜色精品国产九色| 国产精品v亚洲精品v日韩精品 | 中文字幕不卡在线| 中文字幕在线日亚洲9| 色婷婷综合久久久久| 成人在线视频www| 精品免费久久久久久久| 成人国产精品免费网站| 天天综合天天干| 国产一区二区三区在线观看网站| 蜜桃成人精品| japanese在线视频| 成人综合婷婷国产精品久久蜜臀 | av成人黄色| 亚洲av无码一区二区二三区| 欧美午夜在线一二页| 含羞草www国产在线视频| 91免费看网站| 性欧美精品高清| 91av手机在线| 精品福利在线导航| 日韩电影av| 老司机午夜网站| www.日韩在线| 一级久久久久久| 欧美巨猛xxxx猛交黑人97人| 亚洲伊人春色| 国产一级免费大片| 午夜av一区二区三区| 不卡在线视频| 99国产超薄丝袜足j在线观看 | 一区二区在线免费观看| 亚洲 美腿 欧美 偷拍| 国产中文日韩欧美| 亚洲国内欧美| 肉色超薄丝袜脚交69xx图片| 亚洲成人xxx| 日韩一区二区三免费高清在线观看| 免费网站在线观看视频| 国产日韩欧美精品一区| 亚洲黄色在线观看视频| 国产精品成人一区二区| 亚洲国产日本| 永久免费看片视频教学| 日韩电影在线观看中文字幕|