在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何把Docker Registry遷移到Harbor

馬哥Linux運(yùn)維 ? 來(lái)源:K8sMeetup社區(qū) ? 作者:木子 ? 2021-09-07 16:29 ? 次閱讀

“要如何將 docker registry 中的鏡像遷移至 harbor?本文介紹了四種具體的思路和想法供大家參考。

Registry

Docker Distribution

Docker Distribution 是第一個(gè)是實(shí)現(xiàn)了打包、發(fā)布、存儲(chǔ)和鏡像分發(fā)的工具,起到 docker registry 的作用。(目前 Distribution 已經(jīng)捐贈(zèng)給了 CNCF)。其中 Docker Distribution 中的 spec 規(guī)范后來(lái)也就成為了 OCI distribution-spec 規(guī)范。可以認(rèn)為 Docker Distribution 實(shí)現(xiàn)了大部分 OCI 鏡像分發(fā)的規(guī)范,二者在很大程度上也是兼容的。OCI 的指導(dǎo)思想時(shí)先有工業(yè)界的實(shí)踐,再將這些實(shí)踐總結(jié)成技術(shù)規(guī)范,因此盡管 OCI 的 distribution-spec 規(guī)范還沒(méi)有正式發(fā)布(目前版本是 v1.0.0-rc1),但以 Docker Distribution 作為基礎(chǔ)的鏡像倉(cāng)庫(kù)已經(jīng)成為普遍采用的方案,docker registry http api v2 也就成為了事實(shí)上的標(biāo)準(zhǔn)。

Harborharbor 也是采用了 Docker Distribution (docker registry)作為后端鏡像存儲(chǔ)服務(wù),在 harbor 2.0 之前的版本,鏡像相關(guān)的功能大部分是由 Docker Distribution 來(lái)處理,鏡像和 OCI 等制品的元數(shù)據(jù)是 harbor 組件從 docker registry 中提取出來(lái)的;harbor 在 2.0 版本之后,鏡像等 OCI 制品相關(guān)的元數(shù)據(jù)由 harbor 自己來(lái)維護(hù),而且元數(shù)據(jù)是在 PUSH 這些制品時(shí)寫(xiě)入到 harbor 的數(shù)據(jù)庫(kù)中的。正因得益于此,harbor 不再僅僅是個(gè)用來(lái)存儲(chǔ)和管理鏡像的服務(wù),而一個(gè)云原生倉(cāng)庫(kù)服務(wù),能夠存儲(chǔ)和管理符合 OCI 規(guī)范的 Helm Chart、CNAB、OPA Bundle 等多種 Artifact。Docker Registry to Harbor回到本文主題:如何將 docker registry 中的鏡像遷移至 harbor?

假如內(nèi)網(wǎng)環(huán)境中有兩臺(tái)機(jī)器,一臺(tái)機(jī)器上運(yùn)行著 docker registry,域名假設(shè)為 registry.k8s.li 。另一臺(tái)機(jī)器運(yùn)行著 harbor,假設(shè)域名為 harbor.k8s.li。現(xiàn)在 docker registry 中存放了五千個(gè)鏡像。harbor 是剛剛部署的,里面還沒(méi)有鏡像。在磁盤(pán)和網(wǎng)絡(luò)沒(méi)有限制的情況下,如何高效地將 docker registry 中的鏡像遷移到 harbor 中呢?

獲取 Registry 所有鏡像的列表

首先在遷移之前我們要獲取一份 docker registry 中鏡像的列表,這樣我們才能保證遷移后沒(méi)有鏡像丟失。根據(jù)《 深入淺出容器鏡像的一生》一文中提到的 registry 的存儲(chǔ)目錄結(jié)構(gòu)。在 registry 存儲(chǔ)目錄中,每個(gè)鏡像的 tag 都是由 current/index 這個(gè)文件指向該 tag 鏡像的 manifests 文件的,由此我們可以通過(guò)遍歷 registry 存儲(chǔ)目錄中 current/index 文件的方式來(lái)得到所有鏡像的 tag,由此得到該 registry 中所有鏡像的列表。注意,這樣只能得到有 tag 的鏡像,其他沒(méi) tag 的鏡像無(wú)法獲取到。

可通過(guò)如下命令在 registry 存儲(chǔ)目錄下獲取鏡像列表:

Harbor 創(chuàng)建 project

對(duì)于新部署的 harbor 來(lái)說(shuō),上面只會(huì)有一個(gè)默認(rèn)的 library 的 project,需要手動(dòng)在 harbor 上創(chuàng)建 docker registry 中對(duì)應(yīng)的 project。docker registry 中鏡像的 project 就是 registry 存儲(chǔ)目錄中 repositories 下的目錄名。

得到了鏡像列表,以及在 harbor 上完成了對(duì)應(yīng) project 的創(chuàng)建,我們就可以做正式的遷移工作啦。根據(jù)不同的場(chǎng)景,可使用如下幾種方案:

方案一:docker retag

方案一可能是大多數(shù)人首先想到的辦法,也是最簡(jiǎn)單粗暴的方法。就是在一臺(tái)機(jī)器上使用 docker pull 下 docker registry 中的所有鏡像,然后再 docker retag 一下,再 docker push 到 harbor 中。

如果之前看過(guò)我寫(xiě)的《深入淺出容器鏡像的一生》和 《鏡像搬運(yùn)工 skopeo 初體驗(yàn)》,并且已經(jīng)在日常生活中使用 skopeo ,一定會(huì)覺(jué)得這并不是個(gè)聰明的方案,因?yàn)?docker pull –》 docker tag –》 docker pull 的過(guò)程中會(huì)對(duì)鏡像的 layer 進(jìn)行解壓縮。對(duì)于只是將鏡像從一個(gè) registry 復(fù)制到另一個(gè) registry 來(lái)說(shuō),這些 docker 在這些過(guò)程中做了很多無(wú)用功。詳細(xì)的原理可以參考上述兩篇文章,在此不再贅述。

為了追求高效,我們不使用 docker retag 方案,下面看一下方案二:

方案二:skopeo

在《鏡像搬運(yùn)工 skopeo 初體驗(yàn)》一文中介紹過(guò)可以使用 skopeo copy 直接從一個(gè) registry 中復(fù)制鏡像原始 blobs 到另一個(gè) registry 中,在此期間不會(huì)涉及鏡像 layer 解壓縮操作。在性能和耗時(shí)兩個(gè)角度上,都比使用 docker 的方式高效很多。

使用 skopeo copy

使用 skopeo sync

無(wú)論是 docker 和 skopeo 本質(zhì)上都是通過(guò) registry 的 HTTP API 下載和上傳鏡像的,在這過(guò)程中還是多了不少 HTTP 請(qǐng)求的,如果走的是 HTTPS 的話(huà),還涉及了 HTTPS 加密和解密的過(guò)程,這期間有很多無(wú)用功。那么還有沒(méi)有更好的辦法?

方案三:遷移存儲(chǔ)目錄

文章開(kāi)頭提到 harbor 的后端鏡像存儲(chǔ)也是使用的 docker registry,對(duì)于一個(gè) registry 來(lái)說(shuō),只要是使用的是 Docker Distribution V2 ,它后端的存儲(chǔ)目錄結(jié)構(gòu)都是一模一樣的。那為什么不直接將 registry 的存儲(chǔ)目錄打包復(fù)制并解壓到 harbor 的 registry 存儲(chǔ)目錄?這樣又能保證所有的鏡像都遷移過(guò)去,不會(huì)落下任何一個(gè)。

對(duì)于 harbor 1.x 版本來(lái)講,將 docker registry 的存儲(chǔ)目錄直接遷移到 harbor 的 registry 存儲(chǔ)目錄,然后刪除 harbor 的 redis 數(shù)據(jù)(因?yàn)?harbor 的 redis 緩存了鏡像的元數(shù)據(jù)信息),重啟 harbor 就好了。重啟 harbor 之后,harbor 會(huì)調(diào)用后端的 registry 去提取鏡像的元數(shù)據(jù)信息并存儲(chǔ)到 redis 中。這樣就完成了遷移的工作。在 docker registry 機(jī)器上備份 registry 存儲(chǔ)目錄

備份完成之后將 docker.tar scp 到 harbor 機(jī)器上,然后在 harbor 機(jī)器上恢復(fù) registry 存儲(chǔ)目錄

這樣遷移之后可能會(huì)遇到無(wú)法往 harbor push 鏡像的問(wèn)題。因?yàn)?docker registry 容器內(nèi) registry 存儲(chǔ)目錄的所屬和所屬組為 root,而 harbor registry 容器內(nèi) registry 存儲(chǔ)目錄的所屬和所屬組為 10000:10000,二者權(quán)限并不相同,會(huì)導(dǎo)致 harbor 無(wú)法 push 鏡像。因此在遷移完成之后需要修改一下 harbor registry 目錄的所屬和所屬組。

方案四

對(duì)于 harbor 2.x 來(lái)講,由于 harbor 強(qiáng)化了 Artifact 的元數(shù)據(jù)管理能力,即元數(shù)據(jù)要在 push 或者 sync 到 harbor 時(shí)寫(xiě)入到 harbor 自身的數(shù)據(jù)庫(kù)中。在 harbor 看來(lái)只要數(shù)據(jù)庫(kù)中沒(méi)有這個(gè) Artifact 的 manifest 信息或者沒(méi)有這一層 layer 的信息,harbor 都會(huì)認(rèn)為該 Artifact 或者 layer 不存在,返回 404 的錯(cuò)誤。按照方案三直接而將 docker registry 存儲(chǔ)目錄解壓到 harbor 的 registry 存儲(chǔ)目錄的方法行不通的。因?yàn)槭菍㈢R像解壓到 registry 存儲(chǔ)中的,雖然在 harbor 的 registry 容器看來(lái)是有鏡像的,但因?yàn)?harbor 的數(shù)據(jù)庫(kù)中沒(méi)有鏡像,harbor 就會(huì)認(rèn)為沒(méi)有鏡像。那么現(xiàn)在看來(lái)只能通過(guò)方案二使用 skopeo 將鏡像一個(gè)一個(gè)地 push 到 harbor 中了。

但對(duì)于某些特定的場(chǎng)景下,不能像方案二那樣擁有一個(gè) docker registry 的 HTTP 服務(wù),只有一個(gè) docker registry 的壓縮包,這如何將 docker registry 的存儲(chǔ)目錄中的鏡像遷移到 harbor 2.0 中呢?在《鏡像搬運(yùn)工 skopeo 初體驗(yàn)》中提到過(guò) skopeo 支持的鏡像格式有如下幾種:

44144e54-0fb2-11ec-8fb8-12bb97331649.png

需要注意的是,這幾種鏡像的名字,對(duì)應(yīng)著鏡像存在的方式,不同存在的方式對(duì)鏡像的 layer 處理的方式也不一樣,比如 docker:// 這種方式是存在 registry 上的;docker-daemon: 是存在本地 docker pull 下來(lái)的;再比如 docker-archive 是通過(guò) docker save 出來(lái)的鏡像;而 dir: 是鏡像以文件夾的形式保存的。同一個(gè)鏡像有這幾種存在的方式就像水有氣體、液體、固體一樣。可以這樣去理解,他們表述的都是同一個(gè)鏡像,只不過(guò)是存在的方式不一樣而已。既然鏡像是存放在 registry 存儲(chǔ)目錄里的,那么使用 dir 的形式直接從文件系統(tǒng)讀取鏡像,理論上來(lái)講會(huì)比方案二要好一些。雖然 skopeo 支持 dir 格式的鏡像,但 skopeo 目前并不支持直接使用 registry 的存儲(chǔ)目錄,所以還是需要想辦法將 docker registry 存儲(chǔ)目錄里的每一個(gè)鏡像轉(zhuǎn)換成 skopeo dir 的形式。skopeo dir那么先來(lái)看一下 skopeo dir 是什么樣子的?為了方便測(cè)試方案的可行性,先使用 skopeo 命令先從 docker hub 上拉取一個(gè)鏡像,并保存為 dir,命令如下:

使用 tree 命令查看一下 alpine 文件夾的目錄結(jié)構(gòu),如下:

從文件名和大小以及文件的內(nèi)省我們可以判斷出,manifest 文件對(duì)應(yīng)的就是鏡像的 manifests 文件;類(lèi)型為 ASCII text 的文件正是鏡像的 image config 文件,里面包含著鏡像的元數(shù)據(jù)信息。而另一個(gè) gzip compressed data 文件不就是經(jīng)過(guò) gzip 壓縮過(guò)的鏡像 layer 嘛。看一下 manifest 文件的內(nèi)容也再次印證了這個(gè)結(jié)論:

鏡像的 config 字段對(duì)應(yīng)的正是 e50c909a8df2,而文件類(lèi)型正是 image.v1+json 文本文件。

鏡像的 layer 字段對(duì)應(yīng)的也正是 4c0d98bf9879 而文件類(lèi)型正是 .tar.gzip gzip 壓縮文件。

從 registry 存儲(chǔ)目錄中撈鏡像出來(lái)接下來(lái)到本文的較為精彩的地方了。如何從 registry 存儲(chǔ)里“撈”鏡像出來(lái),轉(zhuǎn)換成 skopeo 所支持的 dir 格式。

首先要得到鏡像的 manifests 文件,從 manifests 文件中可以得到該鏡像的所有 blob 文件。例如對(duì)于 registry 存儲(chǔ)目錄中的 library/alpine:latest 鏡像來(lái)講,它在 registry 中是這樣存放的:

1.通過(guò) repositories/library/alpine/_manifests/tags/latest/current/link 文件得到 alpine 鏡像 lasts 這個(gè) tag 的 manifests 文件的 sha256 值,然后根據(jù)這個(gè) sha256 值去 blobs 找到鏡像的 manifests 文件;2.根據(jù) current/link 文件中的 sha256 值在 blobs 目錄下找到與之對(duì)應(yīng)的文件,blobs 目錄下對(duì)應(yīng)的 manifests 文件為 blobs/sha256/39/39eda93d15866957feaee28f8fc5adb545276a64147445c64992ef69804dbf01/data;

3.使用正則匹配,過(guò)濾出 manifests 文件中的所有 sha256 值,這些 sha256 值就對(duì)應(yīng)著 blobs 目錄下的 image config 文件和 image layer 文件;

4.根據(jù) manifests 文件就可以得到 blobs 目錄中鏡像的所有 layer 和 image config 文件,然后將這些文件拼成一個(gè) dir 格式的鏡像,在這里使用 cp 的方式將鏡像從 registry 存儲(chǔ)目錄里復(fù)制出來(lái),過(guò)程如下:

最終得到的鏡像格式如下:

和上面的 skopeo copy 出來(lái)的 dir 文件夾對(duì)比一下,除了一個(gè)無(wú)關(guān)緊要的 version 文件,其他的都一摸一樣。5.再優(yōu)化一下,將步驟 4 中的 cp 操作修改成硬鏈接操作,能極大減少磁盤(pán)的 IO 操作。需要注意:硬鏈接文件不能跨分區(qū),所以要和 registry 存儲(chǔ)目錄在同一個(gè)分區(qū)下才行。

然后使用 skopeo copy 或者 skopeo sync 將撈出來(lái)的鏡像 push 到 harbor

使用 skopeo copy

使用 skopeo sync 需要注意的是,skopeo sync 的方式是同步 project 級(jí)別的,鏡像的 name 和 tag 就對(duì)應(yīng)的是目錄的名稱(chēng)

實(shí)現(xiàn)腳本

其實(shí)修改一下 skopeo 的源碼應(yīng)該也是可以無(wú)縫支持 registry 存儲(chǔ)目錄的。

對(duì)比

45424830-0fb2-11ec-8fb8-12bb97331649.png

對(duì)比總結(jié)一下以上幾種方案:

方案一:上手成本低,適用于鏡像數(shù)量比較多少,無(wú)需安裝 skopeo 的情況,缺點(diǎn)是性能較差;

方案二:適用于兩個(gè) registry 之間同步復(fù)制鏡像,如將 docker hub 中的一些公共鏡像復(fù)制到公司內(nèi)網(wǎng)的鏡像倉(cāng)庫(kù)中。

方案三:適用于鏡像倉(cāng)庫(kù)之間進(jìn)行遷移,性能是所有方案里最好的,需要額外注意的是如果目的鏡像倉(cāng)庫(kù)是 harbor 2.x,是無(wú)法使用這種方式的。

方案四:是方案三的妥協(xié)版,為了適配 harbor 2.0 ,因?yàn)樾枰匦聦㈢R像 push 到 harbor ,所以性能上要比方案三差一些。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4891

    瀏覽量

    70306
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    512

    瀏覽量

    12754

原文標(biāo)題:4 種方法將 Docker Registry 遷移至 Harbor

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何將項(xiàng)目從IAR遷移到Embedded Studio

    本文描述如何將IAR EWARM項(xiàng)目遷移到SEGGER Embedded Studio(簡(jiǎn)稱(chēng)SES)中。
    的頭像 發(fā)表于 02-25 17:11 ?492次閱讀
    如何將項(xiàng)目從IAR<b class='flag-5'>遷移到</b>Embedded Studio

    Flexusx 實(shí)例與 Harbor 私有鏡像倉(cāng)庫(kù)的完美結(jié)合

    Harbor 作為領(lǐng)先的私有鏡像倉(cāng)庫(kù),與 Flexus X 完美結(jié)合,助力企業(yè)輕松管理 Docker 鏡像,確保應(yīng)用部署的安全與高效。828 特惠期間,選擇 Flexus X + Harbor,不僅享受
    的頭像 發(fā)表于 01-22 18:04 ?312次閱讀
    Flexusx 實(shí)例與 <b class='flag-5'>Harbor</b> 私有鏡像倉(cāng)庫(kù)的完美結(jié)合

    從INA219遷移到INA232

    電子發(fā)燒友網(wǎng)站提供《從INA219遷移到INA232.pdf》資料免費(fèi)下載
    發(fā)表于 11-14 14:17 ?1次下載
    從INA219<b class='flag-5'>遷移到</b>INA232

    從USCI模塊遷移到eUSCI模塊

    電子發(fā)燒友網(wǎng)站提供《從USCI模塊遷移到eUSCI模塊.pdf》資料免費(fèi)下載
    發(fā)表于 10-18 10:39 ?0次下載
    從USCI模塊<b class='flag-5'>遷移到</b>eUSCI模塊

    從TMS320VC5509遷移到TMS320VC5509A

    電子發(fā)燒友網(wǎng)站提供《從TMS320VC5509遷移到TMS320VC5509A.pdf》資料免費(fèi)下載
    發(fā)表于 10-17 10:38 ?0次下載
    從TMS320VC5509<b class='flag-5'>遷移到</b>TMS320VC5509A

    從OMAP3530遷移到AM37x

    電子發(fā)燒友網(wǎng)站提供《從OMAP3530遷移到AM37x.pdf》資料免費(fèi)下載
    發(fā)表于 10-14 11:39 ?0次下載
    從OMAP3530<b class='flag-5'>遷移到</b>AM37x

    從TMS320DM6467遷移到TMS320DM6467T

    電子發(fā)燒友網(wǎng)站提供《從TMS320DM6467遷移到TMS320DM6467T.pdf》資料免費(fèi)下載
    發(fā)表于 10-14 11:30 ?0次下載
    從TMS320DM6467<b class='flag-5'>遷移到</b>TMS320DM6467T

    從TMS320DM6446 594MHz遷移到810MHz

    電子發(fā)燒友網(wǎng)站提供《從TMS320DM6446 594MHz遷移到810MHz.pdf》資料免費(fèi)下載
    發(fā)表于 10-14 11:18 ?0次下載
    從TMS320DM6446 594MHz<b class='flag-5'>遷移到</b>810MHz

    從TMS320C5515遷移到TMS320C5517

    電子發(fā)燒友網(wǎng)站提供《從TMS320C5515遷移到TMS320C5517.pdf》資料免費(fèi)下載
    發(fā)表于 10-12 10:40 ?0次下載
    從TMS320C5515<b class='flag-5'>遷移到</b>TMS320C5517

    從OMAP3530遷移到AM35x

    電子發(fā)燒友網(wǎng)站提供《從OMAP3530遷移到AM35x.pdf》資料免費(fèi)下載
    發(fā)表于 10-12 09:26 ?0次下載
    從OMAP3530<b class='flag-5'>遷移到</b>AM35x

    IT資源遷移到云服務(wù)器的關(guān)鍵因素

    隨著云計(jì)算技術(shù)的不斷成熟和普及,越來(lái)越多的企業(yè)選擇將他們的IT資源遷移到云服務(wù)器上。這種轉(zhuǎn)變不僅可以降低成本、提高靈活性,還可以提升安全性和效率。本文將深入探討將IT資源遷移到云服務(wù)器的重要性、優(yōu)勢(shì)
    的頭像 發(fā)表于 09-18 11:21 ?540次閱讀

    遷移到基于Arm STM32的MSPMO指南

    電子發(fā)燒友網(wǎng)站提供《從遷移到基于Arm STM32的MSPMO指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-07 11:17 ?0次下載
    從<b class='flag-5'>遷移到</b>基于Arm STM32的MSPMO指南

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

    環(huán)境的一致性,使得應(yīng)用的遷移更加的容易。Docker可在很多平臺(tái)上運(yùn)行,無(wú)論是物理機(jī)、虛擬機(jī)、公有云、私有云、甚至是筆記本、其運(yùn)行結(jié)果是一致的。因此用戶(hù)可很輕易的將在一個(gè)平臺(tái)上運(yùn)行的應(yīng)用,遷移到另一個(gè)
    發(fā)表于 07-25 14:36

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

    的一致性,使得應(yīng)用的遷移更加的容易。Docker可在很多平臺(tái)上運(yùn)行,無(wú)論是物理機(jī)、虛擬機(jī)、公有云、私有云、甚至是筆記本、其運(yùn)行結(jié)果是一致的。因此用戶(hù)可很輕易的將在一個(gè)平臺(tái)上運(yùn)行的應(yīng)用,遷移到另一個(gè)平臺(tái)上,而
    發(fā)表于 07-17 11:05

    Jtti:Docker會(huì)替代調(diào)虛機(jī)嗎

    嗎? 答案:不會(huì)。 原因:是有些遺留應(yīng)用是運(yùn)行在windows系統(tǒng)上的。有些應(yīng)用可以直接遷移到虛擬上,但是不能直接在容器中運(yùn)行。現(xiàn)在得趨勢(shì)是虛擬機(jī)和容器同時(shí)發(fā)展。容器的優(yōu)點(diǎn)是敏捷性和高性能。而虛擬機(jī)的優(yōu)點(diǎn)是更強(qiáng)的隔離性和運(yùn)維的簡(jiǎn)單性。 Docker不但不會(huì)替代虛擬機(jī),
    的頭像 發(fā)表于 07-12 14:38 ?543次閱讀
    Jtti:<b class='flag-5'>Docker</b>會(huì)替代調(diào)虛機(jī)嗎
    主站蜘蛛池模板: 四虎永久精品免费观看 | 美女免费视频一区二区三区 | 天天碰人人 | 免费看啪 | 68日本xxxxxxxxx18能看的 | xxxxxxxx日本69 | 久久久久久久久综合影视网 | 日本黄色三级视频 | 日本黄页网| 国产在线精品一区免费香蕉 | 两性色午夜视频免费网 | 免费网站直接看 | 五月婷婷婷婷 | 亚洲色图综合网 | 久久理论片 | 老师办公室高h文小说 | 黄在线网站 | 欧美在线网站 | 国产综合色在线视频区色吧图片 | 精品视频一区在线观看 | 欧美大全 | 美女国产在线观看免费观看 | 天天在线免费视频 | 一区三区三区不卡 | 婷婷亚洲五月 | 可以免费看黄色的网站 | 啪一啪日一日 | 色老头·com 色老头成人免费综合视频 色老头久久久久 | 国产精品黄页网站在线播放免费 | 天天操天天弄 | 午夜影视免费完整高清在线观看网站 | 午夜精品久久久久久久久 | 久久综合社区 | 国产在线观看午夜不卡 | 四虎影视入口 | 双性受粗大撑开白浊 | 午夜美女影院 | 四虎影院新网址 | 日日噜噜夜夜狠狠久久丁香 | 国产精品视频久久久久 | 黄色网久久|