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

真正運行容器的工具:深入了解 Runc 和 OCI 規范

開發 開發工具
runc 是一個命令行客戶端,用于運行根據 Open Container Initiative (OCI) 格式打包的應用程序,并且是 Open Container Initiative 規范的兼容實現。

[[430749]]

我們談談位于 Docker、Podman、CRI-O 和 Containerd 核心的工具:runc。

原始容器運行時

如果試圖將鏈從最終用戶繪制到實際的容器進程,它可能如下所示:

runc 是一個命令行客戶端,用于運行根據 Open Container Initiative (OCI) 格式打包的應用程序,并且是 Open Container Initiative 規范的兼容實現。

有一個關于如何運行容器和管理容器映像的開放容器計劃(OCI) 和規范。runc 符合此規范,但還有其他符合 OCI 的運行時。甚至可以運行符合 OCI 標準的虛擬機,Kata Containers 與gVisor就是符合符合 OCI 標準的虛擬機。gVisor 為代表的用戶態 Kernel 方案是安全容器的未來,只是現在還不夠完善。

runc 希望提供一個“ OCI 包”,它只是一個根文件系統和一個config.json 文件。而不是Podman 或 Docker 那樣有“鏡像”概念,所以不能只執行runc run nginx:latest這樣來啟動一個容器。

Runc 符合 OCI 規范(具體來說,是runtime-spec),這意味著它可以使用 OCI 包并從中運行一個容器。值得重申的是,這些bundle并不是“容器鏡像”,它們要簡單得多。層、標簽、容器注冊表和存儲庫等功能 - 所有這些都不是 OCI 包甚至運行時規范的一部分。有一個單獨的 OCI-spec (image-spec )定義鏡像。

文件系統包是你下載容器鏡像并解壓后得到的。所以它是這樣的:

  1. OCI Image -> OCI Runtime Bundle -> OCI Runtime 

在我們的例子中,這意味著:

  1. Container image -> Root filesystem and config.json -> runc 

讓我們構建一個應用程序包。我們可以從 config.json 文件開始,因為這部分非常簡單:

  1. mkdir my-bundle 
  2. cd my-bundle 
  3. runc spec 

runc spec生成一個虛擬的 config.json。它已經有一個“進程”部分,用于指定在容器內運行哪個進程 - 即使有幾個環境變量。

  1.         "ociVersion""1.0.1-dev"
  2.         "process": { 
  3.              "terminal"true
  4.                 "user": { 
  5.                         "uid": 0, 
  6.                         "gid": 0 
  7.                 }, 
  8.                 "args": [ 
  9.                         "sh" 
  10.                 ], 
  11.                 "env": [ 
  12.                         "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  13.                         "TERM=xterm" 
  14.                 ], 
  15.  
  16. ... 

它還定義了在哪里查找根文件系統...

  1. ... 
  2.  
  3.         "root": { 
  4.                 "path""rootfs"
  5.                 "readonly"true 
  6.  
  7.         }, 
  8. ... 

...以及其他許多內容,包括容器內的默認掛載、功能、主機名等。如果檢查此文件,會注意到,許多部分與平臺無關,并且特定于具體操作系統的部分嵌套在適當的內部部分。例如,會注意到有一個帶有 Linux 特定選項的“linux”部分。

如果我們嘗試運行這個包,我們會得到一個錯誤:

  1. # runc run test 
  2. rootfs (/root/my-bundle/rootfs) does not exist 

如果我們簡單地創建文件夾,我們會得到另一個錯誤:

  1. # mkdir rootfs 
  2. # runc run test 
  3. container_linux.go:345: starting container process caused "exec: \"sh\": executable file not found in $PATH" 

這完全有道理 - 空文件夾并不是真正有用的根文件系統,我們的容器沒有機會做任何有用的事情。我們需要創建一個真正的 Linux 根文件系統。這里可以使用如下命令解壓rootfs:

  1. $ docker export $(docker create busybox) | tar -C /mycontainer/rootfs -xvf - 

這里我們使用skopeo 和 umoci 獲取 OCI 應用程序包。

如何使用 skopeo 和 umoci 獲取 OCI 應用程序包

從頭開始創建 rootfilesystem 是一種相當麻煩的事情,因此讓我們使用現有的最小映像之一 busybox。

要拉取鏡像,我們首先需要安裝skopeo。我們也可以使用 Buildah,但它的功能太多,無法滿足我們的需求。Buildah 專注于構建鏡像,甚至具有運行容器的基本功能。由于我們今天盡可能地低級別,我們將使用 skopeo:

  • skopeo 是一個命令行程序,可對容器鏡像和鏡像存儲庫執行各種操作。
  • skopeo 可以在不同來源和目的地之間復制鏡像、檢查鏡像甚至刪除它們。
  • skopeo 無法構建映像,它不知道如何處理 Containerfile。它非常適合自動化容器鏡像升級的 CI/CD 管道。
  1. yum install skopeo -y 

然后復制busybox鏡像:

  1. skopeo copy docker://busybox:latest oci:busybox:latest 

沒有“拉取”——我們需要告訴 skopeo 鏡像的來源和目的地。skopeo 支持幾乎十幾種不同類型的來源和目的地。請注意,此命令將創建一個新busybox文件夾,將在其中找到所有 OCI 鏡像文件,具有不同的鏡像層、清單等。

不要混淆 Image manifest 和 Application runtime bundle manifest,它們是不一樣的。

我們復制的是一個 OCI Image,但是我們已經知道,runc 需要 OCI Runtime Bundle。我們需要一個將鏡像轉換為解壓包的工具。這個工具將是umoci - 一個 openSUSE 實用程序,其唯一目的是操作 OCI 鏡像。要安裝它,請從 Github Releases獲取最新版本的PATH。在撰寫本文時,最新版本是0.4.5. umoci unpack獲取 OCI 鏡像并從中制作一個包:

  1. umoci unpack --image busybox:latest bundle 

讓我們看看bundle文件夾里面有什么:

  1. # ls bundle 
  2. config.json 
  3. rootfs 
  4. sha256_73c6c5e21d7d3467437633012becf19e632b2589234d7c6d0560083e1c70cd23.mtree 
  5. umoci.json 

讓我們將rootfs目錄復制到之前創建的my-bundle目錄。如果你好奇,這是rootfs的內容,如下:

  1. bin dev etc home root tmp usr var 

如果它看起來像一個基本的 Linux 根文件系統,那么就是對的。

根據 OCI Runtime 規范,Linux ABI 下的應用程序會期望 Linux 環境提供以下特殊的文件系統:

  • /proc 文件夾,掛載 proc 文件系統。
  • /sys 文件夾,掛載 sysfs 文件系統。
  • /dev/pts 文件夾,掛載 devpts 文件系統。
  • /dev/shm 文件夾,掛載 tmpfs 文件系統。

這幾個文件夾的作用這里略去,有興趣的讀者可以自行查閱 man7.org。runc 文檔中還額外要求提供:

  • /dev 文件夾,掛載 tmpfs 文件系統。
  • /dev/mqueue 文件夾,掛載 mqueue 文件系統。

runc 是 OCI Runtime 規范的參考實現,規范為容器的創建提供了整潔的接口,只需要為 runc 提供一份 config.json [1]。

使用 runc 運行 OCI 應用程序包

我們準備好將我們的應用程序包作為名為 的容器運行test:

  1. runc run test 

接下來發生的事情是我們最終進入了一個新創建的容器內的 shell!

  1. # runc run test 
  2. / # ls 
  3. bin   dev   etc   home  proc  root  sys   tmp   usr   var 

我們以默認foreground模式運行前一個容器。在這種模式下,每個容器進程都成為一個長時間運行的runc進程的子進程:

  1. 6801   997  \_ sshd: root [priv] 
  2. 6805  6801      \_ sshd: root@pts/1 
  3. 6806  6805          \_ -bash 
  4. 6825  6806              \_ zsh 
  5. 7342  6825                  \_ runc run test 
  6. 7360  7342                  |   \_ runc run test 

如果我終止與該服務器的 ssh 會話,runc 進程也會終止,最終殺死容器進程。讓我們通過sleep infinite在 config.json 中替換 command并將終端選項設置為“false”來更仔細地檢查這個容器。

runc不提供大量的命令行參數。它有類似start,stop和 run的命令來做容器的生命周期管理,但是容器的配置總是來自文件,而不是來自命令行:

  1.         "ociVersion""1.0.1-dev"
  2.         "process": { 
  3.                 "terminal"false
  4.                 "user": { 
  5.                         "uid": 0, 
  6.                         "gid": 0 
  7.                 }, 
  8.                 "args": [ 
  9.                         "sleep"
  10.                         "infinite" 
  11.                 ] 
  12. ... 

這次讓我們以分離模式運行容器:

  1. runc run test --detach 

我們可以看到正在運行的容器runc list:

  1. ID          PID         STATUS      BUNDLE            CREATED                          OWNER 
  2. test        4258        running     /root/my-bundle   2020-04-23T20:29:39.371137097Z   root 

在 Docker 的情況下,有一個Docker Daemon守護進程知道關于容器的一切。runc 如何找到我們的容器?事實證明,它只是在文件系統上保持狀態,默認情況下在里面/run/runc/CONTAINER_NAME/state.json:

  1. # cat /run/runc/test/state.json 
  2. {"id":"test","init_process_pid":4258,"init_process_start":9561183,"created":"2020-04-23T20:29:39.371137097Z","config":{"no_pivot_root":false,"parent_death_signal":0,"rootfs":"/root/my-bundle/rootfs","readonlyfs":true,"rootPropagation":0,"mounts".... 

當我們在分離模式下運行時,原始runc run命令(不再有這樣的進程)和這個容器進程之間沒有關系。如果我們查看進程表,我們會看到容器的父進程是PID 1:

  1. # ps axfo pid,ppid,command 
  2. 4258     1 sleep infinite 

Docker、containerd、CRI-O 等使用分離模式。它的目的是簡化 runc 和全功能容器管理工具之間的集成。值得一提的是 runc 本身并不是某種類型的庫——它是一個 CLI。當其他工具使用 runc 時,它們會調用我們剛剛在操作中看到的相同 runc 命令。

在runc 文檔中閱讀有關前臺模式和分離模式之間差異的更多信息。雖然容器進程的PID是4258,但在容器內部PID顯示為1:

  1. # runc exec test ps                      
  2. PID   USER     TIME  COMMAND 
  3.     1 root      0:00 sleep infinite 
  4.    13 root      0:00 ps 

這要歸功于Linux 命名空間,它是真正的容器背后的基本技術之一。我們可以通過lsns在主機系統上執行來列出所有當前的命名空間 :

  1. # lsns 
  2. NS TYPE   NPROCS   PID USER COMMAND 
  3. 4026532219 mnt         1  4258 root sleep infinite 
  4. 4026532220 uts         1  4258 root sleep infinite 
  5. 4026532221 ipc         1  4258 root sleep infinite 
  6. 4026532222 pid         1  4258 root sleep infinite 
  7. 4026532224 net         1  4258 root sleep infinite 

runc 負責我們容器進程的進程、網絡、掛載和其他命名空間。

容器世界的影子統治者

Podman、Docker 和所有其他工具,包括在那里運行的大多數 Kubernetes 集群,都歸結為runc啟動容器進程的二進制文件。

在實際工作中,幾乎永遠不會做我剛剛給你展示的事情 - 除非正在開發或者調試自己的或現有的容器工具。不能從容器映像中組裝應用程序包,并且使用 Podman 而不是直接使用 runc 會更好。

runc就是Low-Level實現的實現,我們了解幕后發生的事情以及運行容器真正涉及的內容是非常有幫助的。最終用戶和最終容器過程之間仍然有很多層,但是如果了解最后一層,那么容器將不再是神奇的東西,有時也很奇怪。最后你會發現容器它只是 runc 在命名空間中生成一個進程。當然最后一層是Linux內核,相比宇宙中有無數層。

runc 最重要的部分是它跟蹤 OCI運行時規范。盡管幾乎每一個容器,這些天與runc催生,它不具有與runc催生。可以將其與遵循運行時規范的任何其他容器運行時交換,并且容器引擎(如 CRI-O)應該以相同的方式工作。

High-Level容器運行時可以不依賴于 runc 本身。它們依賴于一些遵循 OCI 規范的容器運行時。這是當今容器世界真正美麗的部分。

reference

[1]https://github.com/opencontainers/runtime-spec/blob/master/config.md

https://mkdev.me/en/posts/the-tool-that-really-runs-your-containers-deep-dive-into-runc-and-oci-specifications

https://github.com/opencontainers/runc/blob/master/docs/terminals.md

https://katacontainers.io/

https://polyverse.com/blog/skopeo-the-best-container-tool-you-need-to-know-about/ 

https://umo.ci/quick-start/workflow/

 

責任編輯:武曉燕 來源: 運維開發故事
相關推薦

2010-11-08 13:54:49

Sqlserver運行

2017-05-23 16:11:40

紅帽PaaSOpenShift

2010-10-26 11:28:33

ORACLE運行方式

2012-05-14 17:22:38

ibmdw

2010-06-23 20:31:54

2010-11-19 16:22:14

Oracle事務

2022-08-26 13:48:40

EPUBLinux

2020-09-21 09:53:04

FlexCSS開發

2009-08-25 16:27:10

Mscomm控件

2010-07-13 09:36:25

2020-07-20 06:35:55

BashLinux

2023-09-26 00:40:35

Docker容器操作命令

2023-10-06 00:04:02

2019-08-02 08:59:21

Token認證服務器

2017-01-20 08:30:19

JavaScriptfor循環

2019-11-29 16:21:22

Spring框架集成

2018-09-04 16:20:46

MySQ索引數據結構

2016-10-20 08:46:17

2021-09-03 08:27:47

FortinetSASE平臺安全

2018-02-24 13:21:02

點贊
收藏

51CTO技術棧公眾號

成人av片在线观看| 亚洲茄子视频| 日韩欧美一区电影| 18禁免费观看网站| h视频网站在线观看| 韩国午夜理伦三级不卡影院| 欧美激情欧美激情在线五月| 人妻无码一区二区三区| 激情久久一区二区| 亚洲成av人影院| 性高潮久久久久久久久| 国产91久久久| 美国毛片一区二区| 91精品国产91久久久久| 蜜桃av.com| 久久99视频| 欧美一级日韩不卡播放免费| 男人操女人免费软件| а√中文在线8| 久久婷婷色综合| 国产福利久久精品| 在线观看中文字幕av| 亚洲高清网站| 欧美成人免费在线观看| 欧美激情久久久久久久| 国产精品成人自拍| 欧美成人一级视频| 中文字幕 91| 成人性生活视频| 亚洲高清久久久| 91制片厂免费观看| av在线1区2区| 久久久99精品久久| 精品在线视频一区二区| 精品人妻一区二区三区三区四区 | 久久综合久久网| 日本不卡在线| 国产午夜精品理论片a级大结局 | 中文字幕在线观看91| 欧美日韩卡一| 欧美色视频在线观看| 欧在线一二三四区| 青青青免费在线视频| 亚洲福利一区二区三区| 免费在线黄网站| av理论在线观看| 亚洲免费观看高清完整版在线| 日韩高清av| 国产在线视频网址| 久久香蕉国产线看观看99| 就去色蜜桃综合| 污视频在线免费| www.在线欧美| 久久成人资源| 午夜视频福利在线| 久久午夜电影网| 日韩一区免费观看| yiren22亚洲综合伊人22| 国产片一区二区| 视频一区二区三区在线观看| 国产51人人成人人人人爽色哟哟| 国产嫩草影院久久久久| 日本不卡一区二区三区在线观看| 黄色网址在线播放| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 成人片免费看| 欧美午夜一区二区三区| 911福利视频| 日本亚洲视频| 亚洲激情国产精品| 欧美多人猛交狂配| 日韩精品四区| 欧美成在线观看| 亚洲精品午夜久久久久久久| 亚洲中字黄色| 国产精品精品一区二区三区午夜版 | 色噜噜狠狠永久免费| 国产91绿帽单男绿奴| 99国产精品久久久久久久久久久| 久久影院理伦片| 福利视频在线播放| 国产精品乱人伦| 欧美 亚洲 视频| 黄视频网站在线观看| 日本韩国一区二区三区视频| 亚洲性图一区二区| 北条麻妃一区二区三区在线| 亚洲精品网站在线播放gif| 日本猛少妇色xxxxx免费网站| 911精品美国片911久久久| 欧美精品videossex88| 男人天堂视频在线| 国产麻豆视频一区二区| 欧美日韩另类丝袜其他| 麻豆影院在线| 欧美日韩国产中文精品字幕自在自线| 五月婷婷丁香综合网| 欧美高清一级片| 亚洲精品永久免费| 国产三级国产精品国产国在线观看 | 亚洲精品98久久久久久中文字幕| 国产毛片欧美毛片久久久| 欧美 日韩 国产一区二区在线视频 | 欧美日韩一区在线播放| 超碰在线免费公开| 91黄视频在线| 在线播放av网址| 人人狠狠综合久久亚洲婷| 久久久午夜视频| 中文字幕在线2019| 91最新地址在线播放| 国产在线无码精品| 国产精品4hu.www| 日韩成人中文字幕在线观看| 久久久久久久久久网站| 日韩黄色在线观看| 精品乱子伦一区二区三区| 国产一二三区在线观看| 欧美午夜不卡视频| 久久午夜夜伦鲁鲁片| 女主播福利一区| 成人国产精品av| 国产精品一二三区视频| 亚瑟在线精品视频| 视频区 图片区 小说区| 日韩欧美网址| 日本欧美一二三区| 无码国产精品96久久久久| 一区二区三区欧美日| 亚洲精品20p| 精品大片一区二区| 日产精品99久久久久久| 污视频在线免费| 亚欧色一区w666天堂| www.四虎在线| 欧美区国产区| 97超级碰碰| 伊人电影在线观看| 日韩午夜激情电影| 91香蕉视频在线播放| 久久99精品国产| 三区精品视频观看| 成人日韩精品| 在线播放国产一区二区三区| 亚洲不卡在线视频| 久久久精品tv| 欧美黄色一级片视频| 国产真实有声精品录音| 欧美一性一乱一交一视频| 午夜成人免费影院| 色综合天天综合网国产成人综合天 | 日韩中文字幕第一页| 姑娘第5集在线观看免费好剧| 国产亚洲成aⅴ人片在线观看 | 日韩高清人体午夜| 国产精品suv一区二区三区| 91在线视频播放| 黄www在线观看| 九九免费精品视频在线观看| 国产精品电影在线观看| 懂色一区二区三区| 欧美日本高清视频在线观看| 搜索黄色一级片| 高清不卡一二三区| 男女高潮又爽又黄又无遮挡| 最近国产精品视频| 国产精品视频999| 草莓福利社区在线| 亚洲国产精品福利| 中文字幕高清在线免费播放| 国产性做久久久久久| www.污网站| 国产在线不卡| 久久国产精品-国产精品| 亚洲www免费| 久久久精品欧美| 日韩有码第一页| 欧美色播在线播放| 国产白丝一区二区三区| 国产成人av电影在线观看| 久久黄色片视频| 手机亚洲手机国产手机日韩| av色综合网| 国产精品av一区二区三区| xxxxxxxxx欧美| 国内爆初菊对白视频| 91国产成人在线| 午夜精品一区二区三区视频| 99久久精品免费精品国产| 69久久久久久| 在线精品一区| 一本一本a久久| 日韩欧美天堂| 亚洲字幕一区二区| 欧美特大特白屁股xxxx| 欧美成人免费视频| 国产69精品久久app免费版| 日韩欧美美女一区二区三区| 黄色av一级片| 亚洲三级在线观看| 99久久人妻无码中文字幕系列| 蜜臀va亚洲va欧美va天堂 | 国产精品www爽爽爽| 国产精品一品二品| 婷婷六月天在线| 在线观看日韩av电影| 熟女熟妇伦久久影院毛片一区二区| 欧洲亚洲视频| 97人人澡人人爽| 成人黄色免费网站| 欧美一区第一页| 国产啊啊啊视频在线观看| 尤物精品国产第一福利三区 | 国产91精品在线观看| www.99在线| 夜夜嗨av一区二区三区网站四季av| 亚洲国产欧美不卡在线观看| 日韩有码一区| 亚洲自拍小视频| 91麻豆精品国产91久久久更新资源速度超快 | 毛片久久久久久| 91论坛在线播放| 美女伦理水蜜桃4| 国产一区二区在线观看视频| 日本在线观看免费视频| 美女视频一区免费观看| 777av视频| 欧美日韩午夜| 国产免费xxx| 999视频精品| 亚洲激情电影在线| 九热爱视频精品视频| 国产综合动作在线观看| 91综合久久爱com| 51国偷自产一区二区三区 | 首页欧美精品中文字幕| 久操网在线观看| 亚洲私拍自拍| 人妻夜夜添夜夜无码av| 国产一区观看| 被灌满精子的波多野结衣| 亚洲第一天堂| 糖心vlog在线免费观看| 亚洲国产一区二区在线观看 | 日韩图片一区| 蜜桃传媒一区二区三区| 激情综合电影网| 国产人妻777人伦精品hd| 激情综合自拍| 成人在线观看你懂的| 99视频一区| 日韩av综合在线观看| 亚洲在线成人| 红桃av在线播放| 国产麻豆综合| www.99在线| 久久国产麻豆精品| 国产免费中文字幕| 国产一区二区精品久久91| 日本r级电影在线观看| 国产精品羞羞答答xxdd| 亚洲色偷偷色噜噜狠狠99网| 99久久免费视频.com| 亚洲一区二区三区四区五区六区| 99国产精品久久久久久久久久| 37p粉嫩大胆色噜噜噜| 国产婷婷精品av在线| 久久一级免费视频| 亚洲精品久久7777| 日韩精品一区二区三区国语自制| 色婷婷久久久亚洲一区二区三区 | 日韩一二三区视频| 天堂成人在线视频| 亚洲日本中文字幕| 尤物网在线观看| 欧美成人激情图片网| 9999热视频在线观看| 国产91在线播放精品91| 超碰国产精品一区二页| 国产精品视频一区二区三区经| 日本欧美韩国国产| 亚洲精品人成| 伊人影院久久| 色综合色综合色综合色综合| 国产一区欧美一区| 婷婷五月精品中文字幕| 欧美极品少妇xxxxⅹ高跟鞋 | 成人资源av| 亚洲动漫在线观看| 少妇高潮流白浆| 麻豆亚洲精品| 91丨porny丨九色| 久久蜜桃av一区二区天堂| 国产精品白丝喷水在线观看| 欧美日韩亚洲视频| 国产精品老熟女视频一区二区| 精品福利视频一区二区三区| 国产福利第一视频在线播放| 欧美福利视频在线| 久久91导航| 99一区二区| 精品视频免费在线观看| aa视频在线播放| 美女视频黄 久久| 一起草在线视频| 亚洲精品一二三| 午夜一区二区三区四区| 精品不卡在线视频| 日本高清在线观看wwwww色| 欧美亚洲另类在线| 日本综合精品一区| 亚洲欧洲国产日韩精品| 国产欧美日韩综合一区在线播放| 91亚洲一区二区| 国产精品蜜臀在线观看| 欧产日产国产69| 亚洲国产91色在线| 91精品久久久久久粉嫩| 国产精品女主播视频| 欧美爱爱网站| 亚洲国产精品无码av| 国产一区二区三区香蕉| av免费播放网站| 日韩欧美国产中文字幕| 免费成人在线看| 欧美高清激情视频| 亚洲伊人伊成久久人综合网| 亚洲激情啪啪| 日韩精品亚洲专区| 四虎影成人精品a片| 亚洲www啪成人一区二区麻豆| www.久久成人| 久久大大胆人体| 亚洲伦理网站| 椎名由奈jux491在线播放| 美女一区二区视频| 精品人妻中文无码av在线| 色综合久久88色综合天天免费| 视频二区在线观看| …久久精品99久久香蕉国产| aiai久久| 日韩av中文字幕第一页| 国产91丝袜在线播放0| 欧美成人aaa片一区国产精品| 欧美一区日韩一区| av中文字幕在线播放| 97超碰人人看人人| 欧美日韩一卡| 影音先锋资源av| 精品国产户外野外| 五月婷婷免费视频| 77777亚洲午夜久久多人| 乱亲女h秽乱长久久久| 久久黄色片视频| 久久你懂得1024| 国产精品无码一区| 色偷偷av亚洲男人的天堂| 欧美激情福利| 成年人视频大全| 成人国产精品免费观看视频| 日本一级黄色录像| 亚洲视频在线观看网站| 韩国精品主播一区二区在线观看| 日韩精品极品视频在线观看免费| 蜜桃一区二区三区四区| 日韩av手机在线免费观看| 欧美成人a在线| sm性调教片在线观看| 色就是色欧美| 精品一区二区三区的国产在线播放| 四虎永久免费在线| 亚洲福利在线观看| 亚洲精品555| 欧美日韩一级在线| 波多野结衣亚洲一区| 亚洲国产精品无码久久久| 深夜福利国产精品| 亚洲va欧美va人人爽成人影院| 国产黄页在线观看| 国产精品免费av| 蜜桃视频污在线观看| 国产精品扒开腿做爽爽爽的视频| 91精品一区二区三区综合| 亚洲日本久久久| 在线观看欧美黄色| 91麻豆国产福利在线观看宅福利| 久久久久九九九| 精品中文字幕一区二区| 久久精品久久精品久久| 亚洲欧美中文字幕| 亚洲三级av| 免费激情视频在线观看| 亚洲精品国产一区二区精华液| 男女污污视频在线观看| 成人免费xxxxx在线观看| 国产农村妇女精品一区二区| www.xxxx日本| 亚洲午夜久久久久久久| 9l亚洲国产成人精品一区二三| 国产自偷自偷免费一区|