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

淺析Docker、Containerd、RunC分別是什么

開源
Docker、Google、CoreOS 和其他供應商創建了開放容器計劃 (OCI),目前主要有兩個標準文檔:容器運行時標準 (runtime spec)和 容器鏡像標準(image spec)。

[[431465]]

什么是RunC

上一遍文章《真正運行容器的工具:深入了解 runc 和 OCI 規范》已經講清楚了Runc與OCI。這里再講解一下概念。

Docker、Google、CoreOS 和其他供應商創建了開放容器計劃 (OCI),目前主要有兩個標準文檔:容器運行時標準 (runtime spec)和 容器鏡像標準(image spec)。

OCI 對容器 runtime 的標準主要是指定容器的運行狀態,和 runtime 需要提供的命令。下圖可以是容器狀態轉換圖:

  • init 狀態:這個是我自己添加的狀態,并不在標準中,表示沒有容器存在的初始狀態
  • creating:使用 create 命令創建容器,這個過程稱為創建中
  • created:容器創建出來,但是還沒有運行,表示鏡像和配置沒有錯誤,容器能夠運行在當前平臺
  • running:容器的運行狀態,里面的進程處于 up 狀態,正在執行用戶設定的任務
  • stopped:容器運行完成,或者運行出錯,或者 stop 命令之后,容器處于暫停狀態。這個狀態,容器還有很多信息保存在平臺中,并沒有完全被刪除

Runc的來歷

RunC 是從 Docker 的 libcontainer 中遷移而來的,實現了容器啟停、資源隔離等功能。Docker將RunC捐贈給 OCI 作為OCI 容器運行時標準的參考實現。Docker 默認提供了 docker-runc 實現。事實上,通過 containerd 的封裝,可以在 Docker Daemon 啟動的時候指定 RunC的實現。最初,人們對 Docker 對 OCI 的貢獻感到困惑。他們貢獻的是一種“運行”容器的標準方式,僅此而已。它們不包括鏡像格式或注冊表推/拉格式。當你運行一個 Docker 容器時,這些是 Docker 實際經歷的步驟:

  • 下載鏡像
  • 將鏡像文件解開為bundle文件,將一個文件系統拆分成多層
  • 從bundle文件運行容器

Docker標準化的僅僅是第三步。在此之前,每個人都認為容器運行時支持Docker支持的所有功能。最終,Docker方面澄清:原始OCI規范指出,只有“運行容器”的部分組成了runtime。這種“概念失聯”一直持續到今天,并使“容器運行時”成為一個令人困惑的話題。希望我能證明雙方都不是完全錯誤的,并且在本文中將廣泛使用該術語。RunC 就可以按照這個 OCI 文檔來創建一個符合規范的容器,既然是標準肯定就有其他 OCI 實現,比如 Kata、gVisor 這些容器運行時都是符合 OCI 標準的。

怎么使用 runc

  1.  create the bundle 
  2. $ mkdir -p /mycontainer/rootfs 
  3.  
  4. # [ab]use Docker to copy a root fs into the bundle 
  5. $ docker export $(docker create busybox) | tar -C /mycontainer/rootfs -xvf - 
  6.  
  7. create the specification, by default sh will be the entrypoint of the container 
  8. $ cd /mycontainer 
  9. $ runc spec 
  10.  
  11. # launch the container 
  12. $ sudo -i 
  13. $ cd /mycontainer 
  14. $ runc run mycontainerid 
  15.  
  16. # list containers 
  17. $ runc list 
  18.  
  19. # stop the container 
  20. $ runc kill mycontainerid 
  21.  
  22. # cleanup 
  23. $ runc delete mycontainerid 

在命令行中使用 runc,我們可以根據需要啟動任意數量的容器。但是,如果我們想自動化這個過程,我們需要一個容器管理器。為什么這樣?想象一下,我們需要啟動數十個容器來跟蹤它們的狀態。其中一些需要在失敗時重新啟動,需要在終止時釋放資源,必須從注冊表中提取圖像,需要配置容器間網絡等等。就需要有Low-Level和High-Level容器運行時,runc就是Low-Level實現的實現。

Low-Level和High-Level容器運行時

當人們想到容器運行時,可能會想到一系列示例;runc、lxc、lmctfy、Docker(容器)、rkt、cri-o。這些中的每一個都是為不同的情況而構建的,并實現了不同的功能。有些,如 containerd 和 cri-o,實際上使用 runc 來運行容器,在High-Level實現鏡像管理和 API。與 runc 的Low-Level實現相比,可以將這些功能(包括鏡像傳輸、鏡像管理、鏡像解包和 API)視為High-Level功能。考慮到這一點,您可以看到容器運行時空間相當復雜。每個運行時都涵蓋了這個Low-Level到High-Level頻譜的不同部分。這是一個非常主觀的圖表:

因此,從實際出發,通常只專注于正在運行的容器的runtime通常稱為“Low-Level容器運行時”,支持更多高級功能(如鏡像管理和gRPC / Web API)的運行時通常稱為“High-Level容器運行時”,“High-Level容器運行時”或通常僅稱為“容器運行時”,我將它們稱為“High-Level容器運行時”。值得注意的是,Low-Level容器運行時和High-Level容器運行時是解決不同問題的、從根本上不同的事物。

  • Low-Level容器運行時:容器是通過Linux nanespace和Cgroups實現的,Namespace能讓你為每個容器提供虛擬化系統資源,像是文件系統和網絡,Cgroups提供了限制每個容器所能使用的資源的如內存和CPU使用量的方法。在最低級別的運行時中,容器運行時負責為容器建立namespaces和cgroups,然后在其中運行命令,Low-Level容器運行時支持在容器中使用這些操作系統特性。目前來看低級容器運行時有:runc :我們最熟悉也是被廣泛使用的容器運行時,代表實現Docker。runv:runV 是一個基于虛擬機管理程序(OCI)的運行時。它通過虛擬化 guest kernel,將容器和主機隔離開來,使得其邊界更加清晰,這種方式很容易就能幫助加強主機和容器的安全性。代表實現是kata和Firecracker。runsc:runsc = runc + safety ,典型實現就是谷歌的gvisor,通過攔截應用程序的所有系統調用,提供安全隔離的輕量級容器運行時沙箱。截止目前,貌似并不沒有生產環境使用案例。wasm : Wasm的沙箱機制帶來的隔離性和安全性,都比Docker做的更好。但是wasm 容器處于草案階段,距離生產環境尚有很長的一段路。
  • High-Level容器運行時:通常情況下,開發人員想要運行一個容器不僅僅需要Low-Level容器運行時提供的這些特性,同時也需要與鏡像格式、鏡像管理和共享鏡像相關的API接口和特性,而這些特性一般由High-Level容器運行時提供。就日常使用來說,Low-Level容器運行時提供的這些特性可能滿足不了日常所需,因為這個緣故,唯一會使用Low-Level容器運行時的人是那些實現High-Level容器運行時以及容器工具的開發人員。那些實現Low-Level容器運行時的開發者會說High-Level容器運行時比如containerd和cri-o不像真正的容器運行時,因為從他們的角度來看,他們將容器運行的實現外包給了runc。但是從用戶的角度來看,它們只是提供容器功能的單個組件,可以被另一個的實現替換,因此從這個角度將其稱為runtime仍然是有意義的。即使containerd和cri-o都使用runc,但是它們是截然不同的項目,支持的特性也是非常不同的。dockershim, containerd 和cri-o都是遵循CRI的容器運行時,我們稱他們為高層級運行時(High-level Runtime)。

Kubernetes 只需支持 containerd 等high-level container runtime即可。由containerd 按照OCI 規范去對接不同的low-level container runtime,比如通用的runc,安全增強的gvisor,隔離性更好的runv。

containerd

與RunC_一樣_,我們又可以在這里看到一個docker公司的開源產品containerd曾經是開源docker項目的一部分。盡管_containerd_是另一個自給自足的軟件。

  • 一方面,它稱自己為容器運行時,但是與運行時__RunC_不同_。不僅_containerd_和_runc_的職責不同,組織形式也不同。顯然_runc_是只是一個命令行工具,_containerd_是一個長期居住守護進程。_runc_的實例不能超過底層容器進程。通常它在create調用時開始它的生命,然后只是在容器的 rootfs 中的指定文件去運行。
  • 另一方面,_containerd _可以管理超過數千個_runc_容器。它更像是一個服務器,它偵聽傳入請求以啟動、停止或報告容器的狀態。在引擎蓋下_containerd_使用RunC。然而,_containerd_不僅僅是一個容器生命周期管理器。它還負責鏡像管理(從注冊中心拉取和推送鏡像,在本地存儲鏡像等)、跨容器網絡管理和其他一些功能。

containerd 是一個工業級標準的容器運行時,它強調簡單性、健壯性和可移植性,containerd 可以負責干下面這些事情:

  • 管理容器的生命周期(從創建容器到銷毀容器)
  • 拉取/推送容器鏡像
  • 存儲管理(管理鏡像及容器數據的存儲)
  • 調用 runc 運行容器(與 runc 等容器運行時交互)
  • 管理容器網絡接口及網絡

上圖是 Containerd 整體的架構。由下往上,Containerd支持的操作系統和架構有 Linux、Windows 以及像 ARM 的一些平臺。在這些底層的操作系統之上運行的就是底層容器運行時,其中有上文提到的runc、gVisor 等。在底層容器運行時之上的是Containerd 相關的組件,比如 Containerd 的 runtime、core、API、backend、store 還有metadata 等等。構筑在 Containerd 組件之上以及跟這些組件做交互的都是 Containerd 的 client,Kubernetes 跟 Containerd 通過 CRI 做交互時,本身也作為 Containerd 的一個 client。Containerd 本身有提供了一個 CRI,叫 ctr,不過這個命令行工具并不是很好用。

在這些組件之上就是真正的平臺,Google Cloud、Docker、IBM、阿里云、微軟云還有RANCHER等等都是,這些平臺目前都已經支持 containerd, 并且有些已經作為自己的默認容器運行時了。

從 k8s 的角度看,選擇 containerd作為運行時的組件,它調用鏈更短,組件更少,更穩定,占用節點資源更少。

Docker

Docker 于 2013 年發布,解決了開發人員在端到端運行容器時遇到的許多問題。這里是他包含的所有東西:

  • 容器鏡像格式
  • 一種構建容器鏡像的方法(Dockerfile/docker build);
  • 一種管理容器鏡像(docker image、docker rm等);
  • 一種管理容器實例的方法(docker ps, docker rm 等);
  • 一種共享容器鏡像的方法(docker push/pull);
  • 一種運行容器的方式(docker run);

當時,Docker 是一個單體系統。但是,這些功能中沒有一個是真正相互依賴的。這些中的每一個都可以在可以一起使用的更小、更集中的工具中實現。每個工具都可以通過使用一種通用格式、一種容器標準來協同工作。從 Docker 1.11 之后,Docker Daemon 被分成了多個模塊以適應 OCI 標準。拆分之后,結構分成了以下幾個部分。

其中,containerd 獨立負責容器運行時和生命周期(如創建、啟動、停止、中止、信號處理、刪除等),其他一些如鏡像構建、卷管理、日志等由 Docker Daemon 的其他模塊處理。

Docker 的模塊塊擁抱了開放標準,希望通過 OCI 的標準化,容器技術能夠有很快的發展。

現在創建一個docker容器的時候,Docker Daemon 并不能直接幫我們創建了,而是請求 containerd 來創建一個容器。當containerd 收到請求后,也不會直接去操作容器,而是創建一個叫做 containerd-shim 的進程。讓這個進程去操作容器,我們指定容器進程是需要一個父進程來做狀態收集、維持 stdin 等 fd 打開等工作的,假如這個父進程就是 containerd,那如果 containerd 掛掉的話,整個宿主機上所有的容器都得退出了,而引入 containerd-shim 這個墊片就可以來規避這個問題了,就是提供的live-restore的功能。這里需要注意systemd的 MountFlags=slave。

然后創建容器需要做一些 namespaces 和 cgroups 的配置,以及掛載 root 文件系統等操作。runc 就可以按照這個 OCI 文檔來創建一個符合規范的容器。

真正啟動容器是通過 containerd-shim 去調用 runc 來啟動容器的,runc 啟動完容器后本身會直接退出,containerd-shim 則會成為容器進程的父進程, 負責收集容器進程的狀態, 上報給 containerd, 并在容器中 pid 為 1 的進程退出后接管容器中的子進程進行清理, 確保不會出現僵尸進程。containerd,containerd-shim和容器進程(即容器主進程)三個進程,是有依賴關系的。可以參考《containerd,containerd-shim和runc的依存關系》[1],查看怎么保證live-restore的功能的。

reference

https://www.ianlewis.org/en/container-runtimes-part-1-introduction-container-r

https://iximiuz.com/en/posts/journey-from-containerization-to-orchestration-and-beyond/#container-management

https://github.com/moby/moby/issues/35873#issuecomment-386467562

[1]https://fankangbest.github.io/2017/11/24/containerd-containerd-shim%E5%92%8Crunc%E7%9A%84%E4%BE%9D%E5%AD%98%E5%85%B3%E7%B3%BB/

本文轉載自微信公眾號「運維開發故事」

 

責任編輯:姜華 來源: 運維開發故事
相關推薦

2023-02-24 08:03:24

ChatGPT人臉識別分支

2021-12-09 22:47:44

區塊鏈加密貨幣比特幣

2021-12-30 10:30:12

RunC命令Linux

2022-10-19 12:00:32

CSS 偽類偽元素

2019-07-17 13:41:36

VueReactJSX

2025-07-28 00:00:01

2022-10-26 15:10:46

CSS數據開發

2025-07-02 09:27:09

AOPAdvicePointcut

2021-07-02 16:30:01

CICDDevOps

2010-09-08 17:40:56

協議棧是什么

2021-08-13 05:50:01

ContainerdDockerKubernetes

2022-11-15 10:03:34

2023-10-23 11:07:37

HTTPRPC

2023-06-09 09:10:06

nftablesiptables

2020-09-06 22:04:48

Python運算符開發

2025-02-06 08:44:11

MySQLEXISTSIN

2017-11-21 22:49:10

2016-03-21 10:40:53

RDDSpark SQL數據集

2024-12-30 07:20:00

Redis數據庫MySQL

2021-03-15 14:00:56

PythonC語言編程語言
點贊
收藏

51CTO技術棧公眾號

亚洲精品久久久蜜桃动漫 | 国产一区福利视频| 亚洲第一在线播放| 青青草国产免费一区二区下载| 欧美怡红院视频| 91免费视频黄| 午夜视频www| 蜜臀va亚洲va欧美va天堂 | 欧美色视频一区二区三区在线观看| 97久久精品一区二区三区的观看方式| 亚洲一级不卡视频| 色视频一区二区三区| 国产黄色一级大片| 久久五月激情| 欧美高清在线观看| 成人黄色免费网址| 中文字幕一区日韩精品| 欧美午夜宅男影院在线观看| 一区二区视频在线观看| 天天干天天操av| 黄色小说综合网站| 日韩av电影院| 久草资源在线视频| 第一会所亚洲原创| 亚洲美女在线看| 亚洲免费观看在线| 激情久久99| 欧美日韩亚洲91| 伊人网在线免费| 国产精品无码2021在线观看| 丁香激情综合五月| 成人动漫网站在线观看| 亚洲成人第一网站| 一区二区三区四区五区精品视频| 精品国产一区二区三区在线观看| 女尊高h男高潮呻吟| 亚洲国产高清在线观看| 欧美日韩国产综合视频在线观看| 欧美日韩亚洲一| 久久大胆人体| 亚洲嫩草精品久久| 亚洲亚洲精品三区日韩精品在线视频| 五月天婷婷视频| 成人国产免费视频| 成人av中文| 国产人妖在线播放| 久久国产精品99久久久久久老狼 | 私库av在线播放| 97精品国产一区二区三区| 亚洲热线99精品视频| 亚洲av无码一区二区三区网址| 在线播放一区二区精品视频| 日韩视频一区二区在线观看| 日本一区二区三区在线免费观看| 中文字幕成人| 欧美高清视频一二三区| 男生操女生视频在线观看| 日本肉肉一区| 欧美视频在线观看一区二区| 999香蕉视频| 亚洲最大网站| 在线亚洲一区二区| 一级黄色香蕉视频| 精品69视频一区二区三区| 欧美日韩精品一区二区在线播放 | 国产美女主播视频一区| 91日本视频在线| 国产普通话bbwbbwbbw| 韩国视频一区二区| 亚洲va欧美va国产综合久久| www.五月婷婷| 成人黄色在线视频| 久久综合九色综合久99| 福利在线观看| 中文字幕一区不卡| 久久久久久久香蕉| 麻豆国产在线| 欧美午夜一区二区三区| 性欧美在线视频| 天堂精品久久久久| 日韩av在线网| 粉嫩精品久久99综合一区| 我不卡影院28| 97国产在线视频| 无码人妻熟妇av又粗又大| 麻豆国产一区二区| 国产91视觉| 黄色av网址在线免费观看| 国产精品污www在线观看| 99精品一区二区三区的区别| 欧美videosex性欧美黑吊| 欧美色图在线视频| 欧美一级视频在线| 国产精品成人自拍| 中文字幕亚洲无线码a| 免费在线看黄网址| 日韩黄色免费电影| 亚洲永久在线观看| 免费观看成年在线视频网站| 亚洲欧洲无码一区二区三区| 97超碰在线人人| 欧美性理论片在线观看片免费| 51精品国自产在线| 性欧美丰满熟妇xxxx性仙踪林| 98精品视频| 97成人精品视频在线观看| 中文 欧美 日韩| 成人网页在线观看| 一本一道久久a久久精品综合 | 免费一区二区三区在线观看 | 国产三区精品| 又爽又大又黄a级毛片在线视频| 亚洲国产成人tv| www.99av.com| 久久99精品国产自在现线| 色狠狠久久aa北条麻妃 | 日本高清不卡在线观看| 免费国偷自产拍精品视频| 激情五月综合| 欧美激情一区二区三区高清视频 | 337p亚洲精品色噜噜噜| www.自拍偷拍| 伊人久久大香线蕉综合热线| 成人妇女免费播放久久久| 你懂的在线观看视频网站| 亚洲午夜久久久久久久久电影院| 久久这里只精品| 男男gay无套免费视频欧美| 欧美激情视频给我| av天堂一区二区三区| 国产精品女主播av| 国产福利视频在线播放| 果冻天美麻豆一区二区国产| 久久在线观看视频| 在线观看免费黄色小视频| 2020国产精品自拍| 成人一区二区免费视频| 亚洲超碰在线观看| 欧美大片网站在线观看| 国产精品久久久久久久久久久久久久久久| 久久综合久久综合亚洲| 成人一区二区免费视频| 好吊妞视频这里有精品| 欧美激情va永久在线播放| 国产成人免费看一级大黄| 国产精品久久久久久久久免费樱桃| 人妻熟女一二三区夜夜爱| 久久综合社区| 97国产精品久久| 色婷婷激情五月| 亚洲第一主播视频| 亚洲国产精品狼友在线观看| 国产综合精品| 国产v亚洲v天堂无码| 成人影音在线| 亚洲第一精品自拍| 日韩精品视频免费看| 99视频一区二区| 草草久久久无码国产专区| 日韩黄色网络| 日韩美女免费线视频| 九色在线播放| 欧美日韩激情在线| 日韩在线中文字幕视频| 国产ts人妖一区二区| 91免费黄视频| 色婷婷av一区二区三区丝袜美腿| 欧美专区在线播放| 成年人在线视频| 欧美伊人久久久久久久久影院 | www.com在线观看| 亚洲激情六月丁香| 欧美一级片黄色| 久久电影一区| 亚洲成人a**址| 日本精品在线播放| 国模精品视频一区二区| 日韩亚洲视频在线观看| 欧美三级韩国三级日本一级| 少妇被躁爽到高潮无码文| 大陆成人av片| 久草福利视频在线| 亚洲破处大片| 精品亚洲欧美日韩| а√天堂资源国产精品| 免费成人高清视频| 涩涩视频在线观看免费| 欧美亚洲国产bt| 国产精品免费人成网站酒店| 国产不卡一区视频| 国产成人精品视频ⅴa片软件竹菊| 色天天综合网| 国产一级精品aaaaa看| 国产一区二区三区朝在线观看| 欧美wwwxxxx| 青青久草在线| 91精品国产91久久综合桃花| 欧美一级视频免费观看| 中文字幕日韩精品一区| 国产精品手机在线观看| 日韩国产精品久久久久久亚洲| 国产精品久久久影院| 最新精品国偷自产在线| 91影院未满十八岁禁止入内| 欧美三级精品| 欧美激情第6页| 福利视频在线看| 亚洲国内精品在线| 91精品中文字幕| 色综合天天综合网天天狠天天| 一起操在线播放| 国产亚洲精品久| 国产原创剧情av| 精品一区二区三区免费观看| 玩弄中年熟妇正在播放| 亚洲电影在线一区二区三区| 欧洲精品久久| 偷拍一区二区| 国产精品对白刺激久久久| 日韩一级特黄| 国产91在线播放精品91| 高清精品在线| 欧美激情亚洲国产| 日本三级视频在线播放| 亚洲欧美综合区自拍另类| 色丁香婷婷综合久久| 欧美videofree性高清杂交| 97国产成人无码精品久久久| 日韩欧美中文字幕在线观看| 日本五十熟hd丰满| 亚洲一区国产视频| 欧美成人一区二区三区高清| 亚洲天堂a在线| 极品尤物一区二区| 国产免费成人在线视频| 色婷婷在线影院| 久久只精品国产| 大黑人交xxx极品hd| 99精品欧美一区二区三区小说| 自拍视频第一页| 国产精品影视在线观看| 色姑娘综合天天| 国产资源精品在线观看| 福利视频999| 极品少妇xxxx精品少妇| 九九热免费在线观看| 久久精品99久久久| 中文字幕资源在线观看| 国产在线麻豆精品观看| 免费网站在线观看黄| 国产一区二区0| 人妻av一区二区三区| 高清国产一区二区三区| 亚洲自拍偷拍欧美| 强伦人妻一区二区三区| 2欧美一区二区三区在线观看视频| 日批在线观看视频| 99re成人精品视频| www.超碰97| 久久精品这里都是精品| 欧美老女人性生活视频| 中文字幕电影一区| 国产黄色录像片| 国产精品久久久久久久久免费樱桃| 成人免费视频入口| 亚洲欧洲成人自拍| 久草视频手机在线观看| 亚洲成人动漫一区| 亚洲欧美综合另类| 欧洲一区在线电影| 国产又粗又猛视频| 91精品国产综合久久蜜臀| 午夜精品久久久久久久第一页按摩| 日韩久久久久久| 天天干视频在线| 在线午夜精品自拍| av免费在线观看网址| 国产做受高潮69| 欧美极品影院| 国产欧美精品久久久| 亚洲精品一区国产| 免费看成人午夜电影| 四虎成人av| www.好吊操| 日本不卡一区二区三区| 免费国偷自产拍精品视频| 久久综合色天天久久综合图片| 日本美女bbw| 亚洲综合激情另类小说区| wwwxxx亚洲| 欧美久久久久免费| 三级在线观看网站| 日韩中文字幕不卡视频| 黑人另类精品××××性爽| 国产精品国产亚洲伊人久久| 国产中文欧美日韩在线| 久久青青草原一区二区| 久久久久久久久国产一区| 北条麻妃在线观看| 黄色日韩网站视频| 黄色在线观看av| 亚洲欧美日韩综合aⅴ视频| 国产三级av片| 91精品一区二区三区久久久久久| 日韩电影免费| 免费97视频在线精品国自产拍| 欧美极品免费| 韩国一区二区三区美女美女秀 | 日韩欧美精品一区二区三区经典| 亚洲美女视频| 已婚少妇美妙人妻系列| 国产福利一区二区三区| 亚洲一级理论片| 黑人巨大精品欧美一区免费视频| 亚洲在线视频播放| 国产视频精品在线| 欧美黄色视屏| 成人信息集中地欧美| 国产精品嫩草影院在线看| 日本阿v视频在线观看| 麻豆精品视频在线观看| 一级黄色片大全| 五月天网站亚洲| 亚洲国产精品久久久久爰性色| 自拍亚洲一区欧美另类| 高潮一区二区| 久久国产精品高清| 极品日韩av| 日本在线视频播放| 亚洲三级久久久| 一级片aaaa| 中文字幕精品在线视频| 桃子视频成人app| 久久久久国产精品视频| 91久久综合| 亚洲麻豆一区二区三区| 亚洲在线中文字幕| 国产成人a人亚洲精品无码| 久久视频免费在线播放| 亚洲国产伊人| 资源网第一页久久久| 蜜臀91精品一区二区三区| 天堂av网手机版| 欧美这里有精品| 国产粉嫩一区二区三区在线观看| 国产91热爆ts人妖在线| 欧美日本成人| 免费观看成人在线视频| 久久精品男人的天堂| 无码人妻丰满熟妇奶水区码| 国产一区二区三区毛片| 日韩av首页| 亚洲欧美日韩精品在线| 麻豆精品久久精品色综合| 色哟哟一一国产精品| 日韩一区二区高清| 蜜乳av一区| 精品免费国产| 久久久久国产精品一区三寸| 国产美女免费无遮挡| 欧美中文字幕不卡| 秋霞a级毛片在线看| 亚洲bt欧美bt日本bt| 欧美视频久久| jizz日本免费| 91国模大尺度私拍在线视频| 中文日本在线观看| 91久热免费在线视频| 国产主播一区| 国产精品无码一区二区三区| 在线观看日韩高清av| 日本中文字幕在线看| 91免费看网站| 亚洲视频播放| 国产不卡在线观看视频| 欧美一区二区三区成人| 黄色在线观看www| 日韩欧美视频第二区| 国产美女精品一区二区三区| 国产性生活网站| 亚洲欧美福利视频| 成人动漫视频在线观看| 国产一区二区视频播放| 久久久久久9999| 国产同性人妖ts口直男| 97精品一区二区视频在线观看| 国产亚洲第一伦理第一区| 欧美日韩理论片| 精品久久久久久久久久| 波多野结衣一区二区| yellow视频在线观看一区二区| 国产农村妇女精品一二区| 国产福利在线导航| 亚洲成人av片在线观看| 性欧美gay| 国产av人人夜夜澡人人爽麻豆| 国产人久久人人人人爽| 亚洲高清精品视频| 国产精品男女猛烈高潮激情| 激情久久久久|