一種基于分布式存儲的Docker鏡像下載方法與流程

            文檔序號:12132511閱讀:537來源:國知局
            一種基于分布式存儲的Docker鏡像下載方法與流程

            本發明涉及互聯網領域中的虛擬化方法,特別是涉及通過分布式存儲加速批量下載Docker鏡像的方法。



            背景技術:

            Docker是一個開源的應用容器引擎,旨在提供一個可以運行應用程序的解決方案,做為目前最流行的輕量級虛擬化技術,因為資源利用率高及啟動速度快,一度被認為是虛擬機的替代品。例如,可以在Linux系統上迅速創建一個容器container(輕量級虛擬機),部署和運行應用成許,并通過配置文件可以輕松實現應用程序的自動化安裝,Docker可以虛擬出多個容器,容器之間可以互相獨立。但發展到現在,Docker技術并沒有虛擬機發成熟,虛擬機是一項高度發展、非常成熟的技術,可以運行最關鍵的業務工作負載,而Docker依舊在開發過程中,網絡棧、安全性、命名空間隔離以及集群管理等依然有很多領域需要改進,同時如何加快Docker鏡像的下載從而提升私有集群中多臺機器啟動相同容器時的速度也是亟待解決的問題。

            Docker鏡像作為容器運行環境的基石,徹底解放了Docker容器創建的生命力,開發者可以用一個標準的鏡像構建一套容器,容器開發完成后可以直接使用這個容器部署代碼,鏡像下載過程中需要Docker架構中多個組件的協作。雖然每臺運行Docker的機器上本身都保存著部分鏡像,但Docker還有集中存儲鏡像的地方,Registry就是為集中管理、管理和分發Docker鏡像而設計的項目,目前推薦使用的是Registry的第二個版本,即用golang語言實現的Distribution項目。Docker公司維護了一個類似于github的官方的鏡像存儲網站DocHub,所有Docker用戶都可以申請帳號并從DocHub下載需要的鏡像或者上傳鏡像供他人使用。同時,用戶也可以通過在私有集群中部署Distribution來管理該集群中的鏡像,本實施例中的方法主要是基于布有Distribution的私有集群中的鏡像存儲和下載提速方式。

            目前關于Docker鏡像如何在Distribution中存儲的研究主要關注的是針對Docker鏡像分層的特點,為Distribution開發可以加快鏡像查找和下載速度的新的存儲系統,或者為現有的文件系統開發驅動。

            (1)為現有存儲系統提供driver

            為Docker Distribution提供的官方的后端存儲系統編寫driver,大體推薦選擇的存儲系統有這幾個:Local Filesystem、S3、Swift、glance、Google gcs。Local Filesystem這個可能在鏡像很少的情況下出于簡單性會選擇使用,主要問題顯而易見,擴展性、可用性方面都受到很大的約束。Swift是一個Consistent Hash的拓撲結構,添加機器需要遷移一部分數據過來,分布式文件系統中文件的潛移導致帶寬占用會比較大,影響線上服務。S3解決方案對很多不想自己開發文件系統,但同時希望鏡像存儲端有不錯的擴展性及可用性方面的能力的企業來說也是一個可行的選擇。

            上述方法通過使用分布式存儲系統增加了Distribution存儲Docker鏡像的擴展性和可用性,但由于這些通用的存儲系統并非針對于Docker鏡像分層并且每個層次大小差別很大的特點設計的,所以對于存儲、檢索和下載Docker鏡像的效率并沒有提高。

            (2)設計新的Docker鏡像存儲系統

            Speedy是京東公司開發的Docker鏡像存儲系統,存儲上將多個小文件合并成一個大文件存儲,減少元數據存儲空間開銷和性能開銷,同時在原生文件系統上通過預分配空間方式,提供接近裸盤的讀寫性能,但兼具原生文件系統的易用性,針對大文件做優化,提供斷點續傳、失敗重試等功能。

            在上述方法中,京東雖然通過針對Docker鏡像的特點編寫了特定的存儲系統,并通過使用專用的數據庫來存儲元數據等方式加快了鏡像查找下載速度,使存儲本身已經不是瓶頸。但Distribution所在節點網卡的性能成為了新的瓶頸,該結構并不能擺脫單點瓶頸問題。

            綜上,無論是為現有存儲系統寫驅動還是針對Docker鏡像編寫新的存儲系統,在現有Distribution架構下,都不能避免Distribution節點的網絡瓶頸問題。



            技術實現要素:

            本發明針對現有技術的不足,結合Distribution和分布式文件系統設計新的鏡像分發架構,利用分布式文件系統將鏡像分片存儲,Docker節點(這里的節點指的是物理計算機節點,下文中類似術語皆指物理節點)向Distribution節點發送請求時只傳送元數據,真正的數據去實際的分布式存儲節點中去取,從而真正緩解Distribution節點的網絡瓶頸。

            為了解決上述技術問題,本發明提供一種基于分布式存儲的Docker鏡像下載方法,其步驟如下:

            步驟S101:將分布式文件系統掛在Registry節點存儲鏡像的目錄,并且集群中所有節點都要創建與Registry節點存儲鏡像目錄相同的目錄并掛載分布式文件系統;

            步驟S102:集群中的Docker節點向Registry節點請求下載鏡像;

            步驟S103:Registry節點根據Docker節點的請求確定鏡像層數據在分布式文件系統中的存儲位置,并將獲得的鏡像元數據返回給Docker節點;

            步驟S104:Docker節點根據從Registry節點接收到的元數據確定鏡像數據的存儲位置,并直接到存儲節點提取鏡像數據。

            步驟S101進一步包括:Registry節點在啟動時會指定一個yml文件作為參數,在該文件中設置Registry節點存儲Docker鏡像的目錄、所用的緩存、提供服務的端口以及后端存儲的驅動等內容。在與Docker節點建立連接前,Registry節點先要進行初始化,在初始化的過程中確定要使用的后端存儲,并加載相應的驅動。

            步驟S102進一步包括:集群中的運行Docker的節點向運行Registry的節點請求下載需要的鏡像,集群中運行著Docker的機器啟動要使用的容器,如果這些要啟動容器的節點上沒有對應的鏡像,Docker節點根據Registry所在節點的IP地址和提供服務的端口號等參數,向Registry節點請求下載鏡像,這些請求被發送至Registry節點。

            步驟S103進一步包括:Registry節點查找是否存在要下載的鏡像,如果不存在則返回無相應鏡像標識;若存在則Registry會從分布式文件系統讀取Docker鏡像的manifest并傳遞給Docker節點,其中manifest包含鏡像所含所有層的哈希值。Registry根據解析manifest得到的鏡像包含的所有層的哈希值及各層之間的依賴關系,獲取鏡像層的存儲目錄位置,根據獲取的所述存儲目錄位置讀取出鏡像層文件存儲的目錄、文件名、大小等元數據,之后將這些元數據傳遞給Docker節點。

            進一步的,其中所述所有層的哈希值是使用安全散列算法SHA-256對鏡像層數據進行運算,得出的256位長的消息摘要。

            步驟S104進一步包括:Docker節點將從Registry節點接收到的鏡像層的存儲目錄和文件名作為輸入,通過一致性哈希算法計算出哈希值,確定鏡像層在分布式文件系統中的實際存儲位置,并通過通用的posix標準接口讀取鏡像數據,通過哈希校驗鏡像數據完整性并啟動容器。

            進一步地,哈希校驗具體是:Docker節點從分布式存儲系統讀取完鏡像層數據后,對讀取的鏡像層數據用SHA-256算法做運算,如果得出的256位的哈希值和manifest中存儲的對應的哈希值相等,則說明讀取的數據是完整,否則說明讀取數據的過程出錯。

            采用本發明可以達到以下技術效果:

            當集群中運行有Docker的大量機器同時向運行有Distribution的節點請求下載Docker鏡像時,避免了原始架構中Distribution節點容易成為網絡瓶頸的弊端,將數據下載流量均勻分散到分布式存儲系統所處的機器上,從而加速了鏡像分發過程。

            附圖說明

            圖1為本發明基于分布式存儲的Docker鏡像批量下載方法的流程圖;

            圖2為本發明基于分布式存儲系統Glusterfs為例的分布式存儲的Docker鏡像批量下載方法的簡化架構示意圖;

            圖3為本發明基于分布式存儲的Docker鏡像批量下載方法的詳細操作流程圖;

            圖4為本發明基于分布式存儲的Docker鏡像批量下載技術的數據流圖。

            具體實施方式

            為了使本申請中的技術方案被更好地理解,下面將結合本申請實施例中的附圖和具體實施方式,對本申請進行清楚、詳細的描述。

            首先對本發明涉及的術語及邏輯關系定義如下:

            Docker是一個開源的應用容器引擎,它經常被用于和虛擬機相對比;與虛擬機啟動鏡像類似,Docker也需要基于具體的鏡像來啟動,Docker將鏡像啟動后就形成一個容器;與虛擬機鏡像不同,為了減少存儲空間并減少分發鏡像時的數據下載量,Docker鏡像被設計成分層(layer)的,同一個鏡像的layers通過union mount的方式連接成一個完整的鏡像,同時,當兩個不同的Docker鏡像含有相同的layer時,只需要存儲一次,節省了存儲空間;為了便于管理鏡像,Docker設計了manifest結構,該結構定義了Docker鏡像包含了哪些layer和這些layer之間的依賴關系;同時,為了統一的存儲、管理和分發Docker鏡像,Docker公司還牽頭開發了Registry項目,集群中運行Docker的機器可以向Registry上傳鏡像供他人使用,也可以下載鏡像,目前Registry已經出現了使用較廣的第二代版本,即Distribution項目。另外,在本文中節點指的是Docker、Distribution或者分布式存儲系統所在的物理機器;集群指的是運行著Docker,并且包含運行著Distribution的節點的私有計算機集群。本文方案可統一在Registry下實現,而不僅限于Distribution項目。

            參見圖1,該圖示出了本申請的基于分布式存儲的Docker鏡像批量下載方法的流程。該實施例包括:

            1、步驟S101,將分布式文件系統掛載在Registry節點存儲鏡像的目錄,并且集群中所有節點都要創建與Registry節點存儲鏡像目錄相同的目錄并掛載分布式文件系統。

            更具體地,包括:確定Registry節點存儲Docker鏡像的目錄,在該運行Registry的節點上將要使用的后端存儲系統掛載到該存儲Docker鏡像的目錄,同時在集群中的所有節點上創建與Registry節點的鏡像存儲目錄相同的目錄,并將使用的分布式文件系統掛載到目錄上。

            很多分布式存儲系統的掛載方式已經做的非常簡單,比如Glusterfs、Ceph可以用linux下載mount命令直接掛載存儲目錄,此處所說的集群是實體計算機集合,節點是一臺計算機。

            2、步驟S102,集群中的運行Docker的節點向運行Registry的節點請求下載需要的鏡像,集群中運行著Docker的機器啟動要使用的容器,如果這些要啟動容器的節點上沒有對應的鏡像,那么Docker節點會向Registry節點請求下載鏡像,即會從運行Registry程序的節點下載鏡像。

            Docker在通過run命令啟動容器而Docker宿主機并不含有運行該容器對應的鏡像或者Docker通過pull命令直接下載鏡像時,如果在集群中已經運行了Registry,并且Docker運行命令run或者pull命令時添加了Registry所在節點的IP地址和提供服務的端口號等參數,這些請求就會被發送至Registry節點。

            3、步驟S103,Registry節點根據Docker節點的請求中所帶有的具體參數確定要下載的Docker鏡像數據在分布式文件系統中的存儲位置等數據,并將獲得的數據返回給Docker節點。由于鏡像由許多層構成,鏡像數據實際就是鏡像層的數據。這里首先說明Registry存儲鏡像層目錄的特點,在Registry中,鏡像層存儲位置的前面幾級目錄是固定的,最后一級目錄是以鏡像層為輸入通過安全散列算法SHA-256計算出的哈希值。

            進一步地,其中包括將Docker鏡像的manifest傳遞給Registry,manifest是描述整個鏡像組成的一個數據結構,其中包含鏡像所含所有層的哈希值,這個哈希值是使用安全散列算法SHA-256對鏡像層數據進行運算,得出的256位長的消息摘要。Registry通過解析manifest得到鏡像包含的所有層的哈希值獲取鏡像層的存儲目錄位置。一旦獲取了鏡像層的存儲位置,Registry就可以讀取鏡像層的目錄、文件名、大小等元數據,并將這些數據傳遞給Docker節點。

            Registry解析鏡像的manifest獲取出SHA哈希值。Docker在上傳鏡像時會上傳鏡像對應的manifest,里面已經含有了每層SHA哈希值,如果不含有,那么在上傳過程中會運行SHA-256算法,計算出該值并填入manifest,所以在registry只需要從manifest讀取就可以。

            因為在Registry中,為了節約存儲空間,一個Docker鏡像包含的鏡像層并不集中存儲到一塊兒,各鏡像層分開存儲,其存儲的前面幾級目錄都是確定的,只有最后一級目錄是該層在manifest中對應的哈希值。這樣,Registry在解析了manifest并得到各層對應的哈希值和依賴關系后,便可以拼接出鏡像層存儲位置的目錄。在原來的架構中,這里會繼續讀取鏡像層內容并傳給Docker節點。

            在原始的架構中,Registry在接收到鏡像下載請求時,通過解析manifest得到標識鏡像層的哈希值并拼接出鏡像層的具體存儲目錄后,會繼續去Registry的存儲后端提取鏡像數據返回給Docker節點,當存儲后端并不是Registry所在節點的本地文件系統后,則會首先將鏡像數據從存儲后端所在的機器讀取到Registry節點然后再傳送到請求鏡像的Docker所在節點,即整個鏡像數據都要通過Registry節點,Docker接收到鏡像的所有層的內容后,可以通過解析的依賴關系拼接成整個鏡像。這種松耦合的存儲結構有效避免了鏡像層的重復存儲;而在我們發明的架構中,Registry在解析出鏡像層的存儲位置目錄后,會繼續根據獲取的位置信息讀取出鏡像層文件存儲的目錄、文件名、大小等信息,之后將這些鏡像層數據的目錄名、文件名、大小等元數據傳遞給Docker節點。

            4、步驟S104,Docker節點根據從Registry節點接收到的數據得到鏡像數據的存儲位置,并直接到分布式存儲節點提取鏡像數據:Docker在執行run命令運行特定鏡像對應的容器或者執行pull命令直接下載鏡像時,該Docker所在的機器中不再是直接從Registry所在節點提取鏡像數據了,而是根據Registry返回的元數據信息直接去分布式存儲節點提取數據,通過一致性哈希算法計算出哈希值,確定鏡像層的實際存儲位置,并通過通用的posix標準接口讀取鏡像數據,這樣大大緩解了Registry所在節點的網絡壓力。

            這里所用的一致性哈希算法與上面manifest中存的計算鏡像層的哈希算法是不同的,計算鏡像層哈希值用的是安全散列算法SHA-256,是為了用一個固定的256位長度的字符串指代鏡像層,該算法產生的哈希值會根據輸入的鏡像層內容不同而改變,且重復的概率幾乎為零;而一致性哈希算法,是一種分布式哈希實現算法,在這里解決的是文件的定位問題。具體的實現方式是,一致性哈希算法將輸入的文件目錄和文件名,經過哈希計算后散列到一個環上,之后將運行有分布式文件系統的機器也通過該算法映射到環上,這樣文件對象和機器位于同一個哈希空間中,就能快速定位對象位于的機器了。

            接收到數據后再通過做哈希校驗數據完整性。這里哈希校驗的目的是為了確保Docker根據Registry返回的元數據而從分布式文件系統讀取的數據的完整性,具體校驗方法是,前面我們說過manifest中存儲著鏡像包括的所有層的哈希值,這個值是通過以鏡像層數據為數據通過SHA-256算法計算出的可以唯一標識對應鏡像層的256位長的字符串,這里在Docker節點從分布式存儲系統讀取完鏡像數據后,如果這個數據是完整的,那么再對這個讀取的鏡像層數據用SHA-256算法做運算,得出的256位的哈希值應該是和manifest中存儲的對應的哈希值是相等的。如果不相等,說明讀取數據的過程出了錯。

            步驟S101中已經將分布式文件系統掛載在Registry節點存儲鏡像的目錄,并且集群中所有Docker節點都已經創建了與Registry節點存儲鏡像目錄相同的目錄并掛載分布式文件系統,根據分布式文件系統比如Glusterfs、Ceph的原有特性,在Docker節點上訪問掛載的目錄下的文件其實和在Registry節點上訪問掛在目錄下相同文件最后訪問到的其實是同一個數據。另外,Registry節點在存儲鏡像層數據時,是以鏡像層數據存儲的目錄和文件名為輸入,通過一致性哈希算法計算得出這些數據在分布式文件系統中的實際存儲位置的。又因為,Docker節點上在相同目錄同樣掛在了存儲鏡像的文件系統,所以在Docker接收到Registry傳遞來的包含鏡像層存儲目錄、文件名、大小等信息時,可以依然以存儲目錄和文件名為輸入再次通過一致性哈希算法計算得出鏡像在分布式文件系統中的具體存儲位置,從而可以繞過Registry節點直接到分布式文件系統去讀取數據。

            Docker的鏡像下載包括集群中的多臺機器,涉及Registry節點、Docker節點和分布式存儲系統所在的節點。

            步驟S101中,集群中節點,即物理機,在分布式存儲節點上要預先裝上要用的文件系統,其他節點上裝上該文件系統的客戶端。Registry在啟動時會指定一個yml文件作為參數,在該文件中設置Registry存儲Docker鏡像的目錄、所用的緩存、提供服務的端口以及后端存儲的驅動等內容。這里,不同的后端分布式文件系統需要不同的驅動,現在也有很多機構為Registry針對不同的存儲系統編寫不同的驅動。但是,在本發明中作為Registry后端存儲,并不是簡單地為Registry針對要使用的分布式文件系統寫一個驅動,而是使該文件系統可以無縫的存儲鏡像。

            如圖2示例所示,結合Docker鏡像下載過程,以分布式文件系統Glusterfs為例,改變從Registry下載鏡像的架構實現Docke與Registry交換元數據,而從分布式文件系統接收實際鏡像數據。這種實現,對Registry和Docker兩端的源碼都進行了更改。

            在具體介紹圖2代表的流程之前,首先對該圖中的模塊做簡要說明,該圖中右側標記有Docker的模塊指的是運行有Docker程序的物理機器,其左側標有Docker Registry和Glusterfs Client的模塊指代的是運行有Registry程序的機器,為了實現發明中描述的功能,在此機器上還安裝了分布式文件系統Glusterfs的客戶端,下面三個標有Glusterfs Server的模塊指代的是安裝有分布式文件系統的機器,途中的連線指的數據傳輸過程。

            在改變架構之前所有數據都是通過圖2中的虛線所示的通道傳遞的,Docker會首先向Registry發出下載鏡像的請求,之后Registry會根據Docker請求的鏡像以及在與Docker交互的過程中得到的要下載的鏡像的manifest,Registry根據解析manifest得到的鏡像包含的層的哈希值以及層之間的依賴關系等數據等直接定位鏡像數據的存儲目錄,這個哈希值是以鏡像層數據為輸入,通過SHA-256算法計算出的可以唯一標識對應鏡像層的256位長字符串;然后再以鏡像層的存儲目錄和文件名為輸入,通過一致性哈希算法定位鏡像數據在分布式文件系統中的具體存儲位置并讀取鏡像數據,之后經過Registry節點傳遞到請求下載鏡像的Docker節點,可見整個過程都要經過Registry節點,從而Registry節點成為瓶頸。

            本發明改變架構之后,只有鏡像的元數據以及Registry和Docker間的控制流的交互是通過圖2中的虛線指示的通道傳遞的,而真正的鏡像數據的傳輸則是通過圖2中實線所指的通道實現的。本發明中結合已經在Registry節點、Docker節點和分布式存儲結點掛載的目錄更改Docker在下載鏡像時的代碼和Registry在接收到Docker發送來的鏡像下載請求時的處理方式的代碼,Registry中屏蔽了原來接收到Docker發送請求時的處理函數,新增了接收到Docker發送層下載請求時確定該數據存儲目錄以及文件名、文件大小的函數,并通過HTTP發送給Docker;Docker端新增加了接收到從Registry端接收到數據存儲目錄、文件名數據時的處理函數,此時Docker節點會以得到的鏡像層存儲目錄和文件名為輸入,通過一致性哈希算法計算,確定鏡像層在分布式文件系統中的實際存儲位置,直接去提取。

            在與Docker建立連接前,Registry先要進行初始化,在初始化的過程中確定要使用的后端存儲,并加載相應的驅動。

            步驟S102中,本發明雖然改變了Registry與Docker交換實際鏡像的方式,將原始的交換數據必須經過Registry節點的架構改變為了交換實際鏡像數據時Docker會繞過Registry節點之間從分布式文件系統所部署的機器上提取的方式,但是并沒有破壞Docker原本的使用方式,只要做好了本發明系統所有的準備工作,集群中的機器在啟動大量容器時只需像之前一樣運行run命令就可以,Docker會正常通過本發明中的數據傳輸流程下載鏡像并做好hash校驗后存儲到本地,并基于通過本發明系統下載好的鏡像運行容器。

            步驟S103和S104描述了從Registry接收鏡像下載請求到Docker接收到鏡像數據的全過程,流程如圖3所示,具體如下:

            Docker節點通過下載鏡像或者運行容器的命令向Registry節點請求要下載的鏡像;

            Registry節點和Docker節點間相互認證建立安全連接;

            Registry節點接收請求并根據初始化時注冊的Handler提供服務,其中Handler包含的是Registry節點在接收到Docker節點發送來的請求時的處理函數。本發明實現的結合后端分布式存儲系統從而僅通過Registry傳遞元數據,具體鏡像數據繞過Registry節點,其中就改變了Handler中了部分代碼,并新添加了向Docker返回文件存儲目錄數據信息的函數,相應的也在Docker的源碼中添加了向分布式文件系統中讀取鏡像數據的函數。本發明中元數據的傳輸并沒有繞過Registry節點,因為元數據原本就很小,不會占用太多流量,假如繞過Registry在判斷完整性方面反而會有延遲。所以,本發明中,Registry會根據在初始化時注冊的存儲驅動以及在步驟S101中掛載的文件系統,去查找是否存在要下載的鏡像,如果不存在返回無相應鏡像標識,若存在則首先從文件系統中讀取鏡像的manifest到Registry節點,之后返回給Docker節點;

            前面已經解釋過每個鏡像對應的manifest結構包含了該鏡像所包含的所有layers(鏡像層)的名稱、大小、依賴關系等數據。Docker接收到從Registry返回的manifest后會讀取manifest中包含的鏡像層并與本地存儲的鏡像層做對比,找出本地不存在的層返回給Registry節點;

            接下來,按照原來的架構Registry會繼續從后端存儲系統中讀取實際鏡像數據,然后經過Registry節點中轉最后傳遞給Docker節點;

            本發明中,這次Registry接收到請求后,并不會直接去分布式存儲中讀取鏡像層數據,而是根據接收到的層的名稱確定該層對應的存儲目錄以及對應文件大小等元數據,之后Registry節點將這些元數據傳遞給Docker節點;

            Docker節點由于在準備階段也創建了與Registry節點指定的存儲鏡像的目錄相同的目錄,并也在目錄上與Registry節點掛載了同樣文件系統并做了相應配置,故Docker節點可以將從Registry節點接收到的鏡像層的存儲目錄和文件名作為數據,根據分布式文件系統使用的通過對鏡像層存儲的目錄以及文件名計算分布式hash值,確定鏡像層的實際存儲位置,具體可以得出鏡像存儲位置的原因已經在前面有過描述,并通過通用的posix標準接口讀取鏡像層的數據,即鏡像層數據。

            具體的數據流如圖4所示,這里首先對圖中包括的模塊做簡要解釋,圖中右側標有Docker的模塊指的是運行有Docker程序的物理機器;左側標有Distribution FrontEnd的比較大的模塊指的是運行有第二代版本的Registry,即Distribution的物理機器,其中,Configuration模塊是用來Distribution啟動時注冊所使用的后端存儲驅動、服務端口號等數據的,App中做得是將Configuration中讀取到的配置數據加載到具體的對象并運行對象對外提供服務,Http Server做的是監聽Docker連接和請求、并把處理結果返回給Docker,Router是一個分發器,根據接收到的請求的不同分發到不同的Handler,Handler就是接收到請求后使用的具體處理函數了;下方標有Distribution BackEnd的模塊指代的是安裝有分布式文件系統的物理機器,因為其要存儲位于Distribution中的Docker鏡像,這里將其命名為Distribution BackEnd;其通過linux中的mount命令掛載到Distribution節點,即圖中Mount模塊。其中步驟①指的是Docker發送鏡像下載請求,步驟②是指Registry從后端分布式存儲提取manifest數據并返回給Docker,因為每個Docker鏡像都對應一個manifest,manifest中記錄了鏡像包含的鏡像層(layer),前面說過layer存儲的前面幾級目錄都是固定的,只有最后一級目錄是通過計算layer的hash值得到的,而且manifest中記錄了layer的hash值,所以這里根據拼接起的目錄讀取manifest并不困難,步驟③是指Docker通過接收到的manifest計算得出本地不存在的鏡像layer并就需要下載的層再次發送請求到Registry,步驟④指的就是Registry去后端存儲提取實際鏡像數據的元數據并傳送給Docker,這里所說的元數據主要是指鏡像層的存儲目錄、文件名以及大小等,將這些數據傳遞給Docker,讓Docker可以據此計算出鏡像層的實際存儲位置,與上面所述類似,因為鏡像層的存儲目錄有規律,所以這部讀取元數據并不困難,步驟⑤便是Docker根據從Registry接收到的鏡像元數據信息直接去后端存儲中去讀取實際鏡像數據。

            本發明目的是為了通過用分布式文件系統做為Registry存儲后端并繞過Registry直接傳遞鏡像數據到Docker節點,從而減輕Registry節點的網絡壓力。所以,如何讓容器鏡像數據均勻的分布到存儲節點從而讓Docker節點可以同時從盡可能多的節點下載數據成為關注點之一。經過大量嘗試和實驗,本發明指出分布式文件系統中的分片最能實現該目的,通過分片的方式可以將一個比較大的layer分成幾乎大小相等的數據片,從而均勻的分散到分布式文件系統所處的機器上,繼而分散了網絡流量,比如Glusterfs中的stripe卷。在Glusterfs中只需確定存儲系統所使用的機器,在掛載到鏡像存儲目錄時加上stripe參數便指定為了分片的存儲方式,同時在掛載時還可以在參數中指定分片的大小,分片太大或者太小效果都不會太明顯,太大了超過了一些鏡像layer的總大小會使鏡像在文件系統中的分布不均勻,太小了導致元數據操作太頻繁,經測試3M-4M這個區間比較合適,在五臺存儲節點以及由10臺機器構成的Docker集群的基礎上測試鏡像下載速度已經提升了3倍以上,隨著集群規模的增大,這個速度的提升將更加明顯。

            Docker節點從分布式存儲中讀取完數據后要做的就是對從各存儲節點讀取來的數據進行合并,之前提到過在運行Docker的機器上也掛在了Glusterfs的客戶端,這一步就是Glusterfs客戶端完成的,合并完成后做hash完整性校驗,在確定了鏡像完整性后就可以在此基礎上啟動容器了。

            本發明不僅僅是對鏡像的下載過程做了優化,同時也改變了鏡像的上傳流程。

            Docker節點在保存對鏡像的更改后,如果想上傳到Registry并分享給集群中其他節點使用時,像未改動之前一樣,可以直接將要分享的鏡像作為參數通過docker push命令本上傳到Registry,本發明未對鏡像處理的命令做任何改動,這也是該實施例的一個優點。

            同下載流程相似,在本發明中,在完整準備工作并做好初始化后,依舊是僅僅通過Registry傳遞鏡像元數據,而需要上傳的實際數據則繞過Registry直接寫入到分布式文件系統,這是本發明的另一個實施例。

            Docker鏡像在執行上傳時,首先會向Registry發送請求并發送要上傳的鏡像層元數據,但是并不會直接將鏡像數據上傳,Registry接收到元數據后經處理會返回給Docker端一個目錄,由于所有節點在準備階段已經做好分布式存儲系統的掛載等初始化工作,Docker可以根據接收到的目錄繞過Registry直接通過通用的posix接口向分布式存儲系統寫數據。每上傳一層,Docker都會在鏡像對應的manifest中填寫該layer層的元數據消息。通過循環的方式將鏡像各layer的數據上傳完后,便完成了整個鏡像manifest的組織,然后將該manifest傳遞給Registry。之后,Registry就可以根據此來通過hash方法校驗寫入到存儲系統中的數據的完整性了。上述流程完成后,鏡像便組織到Registry中,集群中其他機器又可以下載使用該上傳的鏡像了。

            通過本發明方案的處理,可以分散鏡像下載時流過Registry節點的數據量,避免了Registry成為整個系統的瓶頸,從而提高了分發鏡像的速度。本發明已經對該方法進行了實現和測試,經測試在含有五臺分布式存儲節點、一臺運行Distribution的節點和十臺運行Docker的節點中,鏡像下載速度提升了將近三倍以上,當集群規模增大時,還會有更大的提升。

            最后所應說明的是,以上實施例僅用以說明本發明的技術方案而非限制,盡管參照較佳實施例對本發明進行了詳細說明,本領域的普通技術人員應當理解,可以對本發明的技術方案進行修改或者等同替換,而不脫離本發明技術方案的精神和范圍。

            當前第1頁1 2 3 
            網友詢問留言 已有0條留言
            • 還沒有人留言評論。精彩留言會獲得點贊!
            1
            婷婷六月激情在线综合激情,亚洲国产大片,久久中文字幕综合婷婷,精品久久久久久中文字幕,亚洲一区二区三区高清不卡,99国产精品热久久久久久夜夜嗨 ,欧美日韩亚洲综合在线一区二区,99国产精品电影,伊人精品线视天天综合,精品伊人久久久大香线蕉欧美
            亚洲精品1区 国产成人一级 91精品国产欧美一区二区 亚洲精品乱码久久久久久下载 国产精品久久久久久久伊一 九色国产 国产精品九九视频 伊人久久成人爱综合网 欧美日韩亚洲区久久综合 欧美日本一道免费一区三区 夜夜爽一区二区三区精品 欧美日韩高清一区二区三区 国产成人av在线 国产精品对白交换绿帽视频 国产视频亚洲 国产在线欧美精品 国产精品综合网 国产日韩精品欧美一区色 国产日韩精品欧美一区喷 欧美日韩在线观看区一二 国产区精品 欧美视频日韩视频 中文字幕天天躁日日躁狠狠躁97 视频一二三区 欧美高清在线精品一区二区不卡 国产精品揄拍一区二区久久 99久久综合狠狠综合久久aⅴ 亚洲乱码视频在线观看 日韩在线第二页 亚洲精品无码专区在线播放 成人亚洲网站www在线观看 欧美三级一区二区 99久久精品免费看国产高清 91麻豆国产在线观看 最新日韩欧美不卡一二三区 成人在线观看不卡 日韩国产在线 在线亚洲精品 亚洲午夜久久久久中文字幕 国产精品成人久久久久久久 精品国产一区二区在线观看 欧美精品国产一区二区三区 中文在线播放 亚洲第一页在线视频 国产午夜精品福利久久 九色国产 精品国产九九 国产永久视频 久久精品人人做人人综合试看 国产一区二区三区免费观看 亚洲精品国产电影 9999热视频 国产精品资源在线 麻豆久久婷婷国产综合五月 国产精品免费一级在线观看 亚洲国产一区二区三区青草影视 中文在线播放 国产成人综合在线 国产在线观看色 国产亚洲三级 国产片一区二区三区 久久99精品久久久久久牛牛影视 亚洲欧美日韩国产 四虎永久免费网站 国产一毛片 国产精品视频在 九九热在线精品 99精品福利视频 色婷婷色99国产综合精品 97成人精品视频在线播放 精品久久久久久中文字幕 亚洲欧美一区二区三区孕妇 亚洲欧美成人网 日韩高清在线二区 国产尤物在线观看 在线不卡一区二区 91网站在线看 韩国精品福利一区二区 欧美日韩国产成人精品 99热精品久久 国产精品免费视频一区 高清视频一区 精品九九久久 欧美日韩在线观看免费 91欧美激情一区二区三区成人 99福利视频 亚洲国产精品91 久热国产在线 精品久久久久久中文字幕女 国产精品久久久久久久久99热 成人自拍视频网 国产精品视频久久久久久 久久影院国产 国产玖玖在线观看 99精品在线免费 亚洲欧美一区二区三区导航 久久久久久久综合 国产欧美日韩精品高清二区综合区 国产精品视频自拍 亚洲一级片免费 久久久久久九九 国产欧美自拍视频 视频一区二区在线观看 欧美日韩一区二区三区久久 中文在线亚洲 伊人热人久久中文字幕 日韩欧美亚洲国产一区二区三区 欧美亚洲国产成人高清在线 欧美日韩国产码高清综合人成 国产性大片免费播放网站 亚洲午夜综合网 91精品久久一区二区三区 国产无套在线播放 国产精品视频网站 国产成人亚洲精品老王 91在线网站 国产视频97 欧美黑人欧美精品刺激 国产一区二区三区免费在线视频 久久久国产精品免费看 99re6久精品国产首页 久久精品91 国产成人一级 国产成人精品曰本亚洲 日本福利在线观看 伊人成综合网 久久综合一本 国产综合久久久久久 久久精品成人免费看 久久福利 91精品国产91久久久久久麻豆 亚洲精品成人在线 亚洲伊人久久精品 欧美日本二区 国产永久视频 国产一区二 一区二区福利 国产一毛片 亚洲精品1区 毛片一区二区三区 伊人久久大香线蕉综合影 国产欧美在线观看一区 亚洲国产欧洲综合997久久 国产一区二区免费视频 国产91精品对白露脸全集观看 久久亚洲国产伦理 欧美成人伊人久久综合网 亚洲性久久久影院 久久99国产精一区二区三区! 91精品国产欧美一区二区 欧美日韩亚洲区久久综合 日韩精品一二三区 久久久夜色精品国产噜噜 国产在线精品福利91香蕉 久久久久久久亚洲精品 97se色综合一区二区二区 91国语精品自产拍在线观看性色 91久久国产综合精品女同我 日韩中文字幕a 国产成人亚洲日本精品 久久国产精品-国产精品 久久国产经典视频 久久国产精品伦理 亚洲第一页在线视频 国产精品久久久久三级 日韩毛片网 久久免费高清视频 麻豆国产在线观看一区二区 91麻豆国产福利在线观看 国产成人精品男人的天堂538 一区二区三区中文字幕 免费在线视频一区 欧美日韩国产成人精品 国产综合网站 国产资源免费观看 亚洲精品亚洲人成在线播放 精品久久久久久中文字幕专区 亚洲人成人毛片无遮挡 国产一起色一起爱 国产香蕉精品视频在 九九热免费观看 日韩亚洲欧美一区 九九热精品在线观看 精品久久久久久中文字幕专区 亚洲欧美自拍偷拍 国产精品每日更新 久久久久国产一级毛片高清板 久久天天躁狠狠躁夜夜中文字幕 久久精品片 日韩在线毛片 国产成人精品本亚洲 国产成人精品一区二区三区 九九热在线观看 国产r级在线观看 国产欧美日韩精品高清二区综合区 韩国电影一区二区 国产精品毛片va一区二区三区 五月婷婷伊人网 久久一区二区三区免费 一本色道久久综合狠狠躁篇 亚洲综合色站 国产尤物在线观看 亚洲一区亚洲二区 免费在线视频一区 欧洲精品视频在线观看 日韩中文字幕a 中文字幕日本在线mv视频精品 91精品在线免费视频 精品国产免费人成在线观看 精品a级片 中文字幕日本在线mv视频精品 日韩在线精品视频 婷婷丁香色 91精品国产高清久久久久 国产成人精品日本亚洲直接 五月综合视频 欧美日韩在线亚洲国产人 精液呈暗黄色 亚洲乱码一区 久久精品中文字幕不卡一二区 亚洲天堂精品在线 激情婷婷综合 国产免费久久精品久久久 国产精品亚洲二区在线 久久免费播放视频 五月婷婷丁香综合 在线亚洲欧美日韩 久久免费精品高清麻豆 精品久久久久久中文字幕 亚洲一区网站 国产精品福利社 日韩中文字幕免费 亚洲综合丝袜 91精品在线播放 国产精品18 亚洲日日夜夜 伊人久久大香线蕉综合影 亚洲精品中文字幕乱码影院 亚洲一区二区黄色 亚洲第一页在线视频 一区二区在线观看视频 国产成人福利精品视频 亚洲高清二区 国内成人免费视频 精品亚洲性xxx久久久 国产精品合集一区二区三区 97av免费视频 国产一起色一起爱 国产区久久 国产资源免费观看 99精品视频免费 国产成人一级 国产精品九九免费视频 欧美91精品久久久久网免费 99热国产免费 久久精品色 98精品国产综合久久 久久精品播放 中文字幕视频免费 国产欧美日韩一区二区三区在线 精品久久蜜桃 国产小视频精品 一本色道久久综合狠狠躁篇 91在线免费观看 亚洲精品区 伊人成综合网 伊人热人久久中文字幕 伊人黄色片 99国产精品热久久久久久夜夜嗨 久久免费精品视频 亚洲一区二区三区高清不卡 久久久久国产一级毛片高清板 国产片一区二区三区 久久狠狠干 99久久婷婷国产综合精品电影 国产99区 国产精品成人久久久久 久久狠狠干 青青国产在线观看 亚洲高清国产拍精品影院 国产精品一区二区av 九九热在线免费视频 伊人久久国产 国产精品久久久久久久久久一区 在线观看免费视频一区 国产精品自在在线午夜区app 国产精品综合色区在线观看 国产毛片久久久久久国产毛片 97国产免费全部免费观看 国产精品每日更新 国产尤物视频在线 九九视频这里只有精品99 一本一道久久a久久精品综合 久久综合给会久久狠狠狠 国产成人精品男人的天堂538 欧美一区二区高清 毛片一区二区三区 国产欧美日韩在线观看一区二区三区 在线国产二区 欧美不卡网 91在线精品中文字幕 在线国产福利 国内精品91久久久久 91亚洲福利 日韩欧美国产中文字幕 91久久精品国产性色也91久久 亚洲性久久久影院 欧美精品1区 国产热re99久久6国产精品 九九热免费观看 国产精品欧美日韩 久久久久国产一级毛片高清板 久久国产经典视频 日韩欧美亚洲国产一区二区三区 欧美亚洲综合另类在线观看 国产精品自在在线午夜区app 97中文字幕在线观看 视频一二三区 精品国产一区在线观看 国产欧美日韩在线一区二区不卡 欧美一区二三区 伊人成人在线观看 国内精品91久久久久 97在线亚洲 国产在线不卡一区 久久久全免费全集一级全黄片 国产精品v欧美精品∨日韩 亚洲毛片网站 在线不卡一区二区 99re热在线视频 久久激情网 国产毛片一区二区三区精品 久久亚洲综合色 中文字幕视频免费 国产视频亚洲 婷婷伊人久久 国产一区二区免费播放 久久99国产精品成人欧美 99国产在线视频 国产成人免费视频精品一区二区 国产不卡一区二区三区免费视 国产码欧美日韩高清综合一区 久久精品国产主播一区二区 国产一区电影 久久精品国产夜色 国产精品国产三级国产 日韩一区二区三区在线 久久97久久97精品免视看 久久国产免费一区二区三区 伊人久久大香线蕉综合电影网 99re6久精品国产首页 久久激情网 亚洲成人高清在线 国产精品网址 国产成人精品男人的天堂538 香蕉国产综合久久猫咪 国产专区中文字幕 91麻豆精品国产高清在线 久久国产经典视频 国产精品成人va在线观看 国产精品爱啪在线线免费观看 日本精品久久久久久久久免费 亚洲综合一区二区三区 久久五月网 精品国产网红福利在线观看 久久综合亚洲伊人色 亚洲国产精品久久久久久网站 在线日韩国产 99国产精品热久久久久久夜夜嗨 国产综合精品在线 国产区福利 精品亚洲综合久久中文字幕 国产制服丝袜在线 毛片在线播放网站 在线观看免费视频一区 国产精品久久久精品三级 亚洲国产电影在线观看 最新日韩欧美不卡一二三区 狠狠综合久久综合鬼色 日本精品1在线区 国产日韩一区二区三区在线播放 欧美日韩精品在线播放 亚洲欧美日韩国产一区二区三区精品 久久综合久久网 婷婷六月激情在线综合激情 亚洲乱码一区 国产专区91 97av视频在线观看 精品久久久久久中文字幕 久久五月视频 国产成人福利精品视频 国产精品网址 中文字幕视频在线 精品一区二区三区免费视频 伊人手机在线视频 亚洲精品中文字幕乱码 国产在线视频www色 色噜噜国产精品视频一区二区 精品亚洲成a人在线观看 国产香蕉尹人综合在线 成人免费一区二区三区在线观看 国产不卡一区二区三区免费视 欧美精品久久天天躁 国产专区中文字幕 久久精品国产免费中文 久久精品国产免费一区 久久无码精品一区二区三区 国产欧美另类久久久精品免费 欧美精品久久天天躁 亚洲精品在线视频 国产视频91在线 91精品福利一区二区三区野战 日韩中文字幕免费 国产精品99一区二区三区 欧美成人高清性色生活 国产精品系列在线观看 亚洲国产福利精品一区二区 国产成人在线小视频 国产精品久久久久免费 99re热在线视频 久久久久久久综合 一区二区国产在线播放 成人国产在线视频 亚洲精品乱码久久久久 欧美日韩一区二区综合 精品久久久久免费极品大片 中文字幕视频二区 激情粉嫩精品国产尤物 国产成人精品一区二区视频 久久精品中文字幕首页 亚洲高清在线 国产精品亚洲一区二区三区 伊人久久艹 中文在线亚洲 国产精品一区二区在线播放 国产精品九九免费视频 亚洲二区在线播放 亚洲狠狠婷婷综合久久久久网站 亚洲欧美日韩网站 日韩成人精品 亚洲国产一区二区三区青草影视 91精品国产福利在线观看 国产精品久久久久久久久99热 国产一区二区精品尤物 久碰香蕉精品视频在线观看 亚洲日日夜夜 在线不卡一区二区 国产午夜亚洲精品 九九热在线视频观看这里只有精品 伊人手机在线视频 91免费国产精品 日韩欧美中字 91精品国产91久久久久 国产全黄三级播放 视频一区二区三区免费观看 国产开裆丝袜高跟在线观看 国产成人欧美 激情综合丝袜美女一区二区 国产成人亚洲综合无 欧美精品一区二区三区免费观看 欧美亚洲国产日韩 日韩亚州 国产欧美日韩精品高清二区综合区 亚洲午夜国产片在线观看 精品久久久久久中文字幕 欧美精品1区 久久伊人久久亚洲综合 亚洲欧美日韩精品 国产成人精品久久亚洲高清不卡 久久福利影视 国产精品99精品久久免费 久久久久免费精品视频 国产日产亚洲精品 亚洲国产午夜电影在线入口 精品无码一区在线观看 午夜国产精品视频 亚洲一级片免费 伊人久久大香线蕉综合影 国产精品久久影院 久碰香蕉精品视频在线观看 www.欧美精品 在线小视频国产 亚洲国产天堂久久综合图区 欧美一区二区三区不卡 日韩美女福利视频 九九精品免视频国产成人 不卡国产00高中生在线视频 亚洲第一页在线视频 欧美日韩在线播放成人 99re视频这里只有精品 国产精品91在线 精品乱码一区二区三区在线 国产区久久 91麻豆精品国产自产在线观看一区 日韩精品成人在线 九九热在线观看 国产精品久久不卡日韩美女 欧美一区二区三区综合色视频 欧美精品免费一区欧美久久优播 国产精品网址 国产专区中文字幕 国产精品欧美亚洲韩国日本久久 日韩美香港a一级毛片 久久精品123 欧美一区二区三区免费看 99r在线视频 亚洲精品国产字幕久久vr 国产综合激情在线亚洲第一页 91免费国产精品 日韩免费小视频 亚洲国产精品综合一区在线 国产亚洲第一伦理第一区 在线亚洲精品 国产精品一区二区制服丝袜 国产在线成人精品 九九精品免视频国产成人 亚洲国产网 欧美日韩亚洲一区二区三区在线观看 在线亚洲精品 欧美一区二区三区高清视频 国产成人精品男人的天堂538 欧美日韩在线观看区一二 亚洲欧美一区二区久久 久久精品中文字幕首页 日本高清www午夜视频 久久精品国产免费 久久999精品 亚洲国产精品欧美综合 88国产精品视频一区二区三区 91久久偷偷做嫩草影院免费看 国产精品夜色视频一区二区 欧美日韩导航 国产成人啪精品午夜在线播放 一区二区视频在线免费观看 99久久精品国产自免费 精液呈暗黄色 久久99国产精品 日本精品久久久久久久久免费 精品国产97在线观看 99re视频这里只有精品 国产视频91在线 999av视频 亚洲美女视频一区二区三区 久久97久久97精品免视看 亚洲国产成人久久三区 99久久亚洲国产高清观看 日韩毛片在线视频 综合激情在线 91福利一区二区在线观看 一区二区视频在线免费观看 激情粉嫩精品国产尤物 国产成人精品曰本亚洲78 国产成人精品本亚洲 国产精品成人免费视频 国产成人啪精品视频免费软件 久久精品国产亚洲妲己影院 国产精品成人久久久久久久 久久大香线蕉综合爱 欧美一区二区三区高清视频 99热国产免费 在线观看欧美国产 91精品视频在线播放 国产精品福利社 欧美精品一区二区三区免费观看 国产一区二区免费视频 国产午夜精品一区二区 精品视频在线观看97 91精品福利久久久 国产一区福利 国产综合激情在线亚洲第一页 国产精品久久久久久久久久久不卡 九色国产 在线日韩国产 黄网在线观看 亚洲一区小说区中文字幕 中文字幕丝袜 日本二区在线观看 日本国产一区在线观看 欧美日韩一区二区三区久久 欧美精品亚洲精品日韩专 国产日产亚洲精品 久久综合九色综合欧美播 亚洲国产欧美无圣光一区 欧美视频区 亚洲乱码视频在线观看 久久无码精品一区二区三区 九九热精品免费视频 久久99精品久久久久久牛牛影视 国产精品成久久久久三级 国产一区福利 午夜国产精品视频 日本二区在线观看 99久久网站 国产亚洲天堂 精品国产一区二区三区不卡 亚洲国产日韩在线一区 国产成人综合在线观看网站 久久免费高清视频 欧美在线导航 午夜精品久久久久久99热7777 欧美久久综合网 国产小视频精品 国产尤物在线观看 亚洲国产精品综合一区在线 欧美一区二区三区不卡视频 欧美黑人欧美精品刺激 日本福利在线观看 久久国产偷 国产手机精品一区二区 国产热re99久久6国产精品 国产高清啪啪 欧美亚洲国产成人高清在线 国产在线第三页 亚洲综合一区二区三区 99r在线视频 99精品久久久久久久婷婷 国产精品乱码免费一区二区 国产在线精品福利91香蕉 国产尤物视频在线 五月婷婷亚洲 中文字幕久久综合伊人 亚洲精品一级毛片 99国产精品电影 在线视频第一页 久久99国产精品成人欧美 国产白白视频在线观看2 成人精品一区二区www 亚洲成人网在线观看 麻豆91在线视频 色综合合久久天天综合绕视看 久久精品国产免费高清 国产不卡一区二区三区免费视 欧美国产中文 99精品欧美 九九在线精品 国产中文字幕在线免费观看 国产一区中文字幕在线观看 国产成人一级 国产精品一区二区制服丝袜 国产一起色一起爱 亚洲精品成人在线 亚洲欧美精品在线 国产欧美自拍视频 99精品久久久久久久婷婷 久99视频 国产热re99久久6国产精品 视频一区亚洲 国产精品视频分类 国产精品成在线观看 99re6久精品国产首页 亚洲在成人网在线看 亚洲国产日韩在线一区 久久国产三级 日韩国产欧美 欧美在线一区二区三区 国产精品美女一级在线观看 成人午夜免费福利视频 亚洲天堂精品在线 91精品国产手机 欧美日韩视频在线播放 狠狠综合久久综合鬼色 九一色视频 青青视频国产 亚洲欧美自拍一区 中文字幕天天躁日日躁狠狠躁97 日韩免费大片 996热视频 伊人成综合网 亚洲天堂欧美 日韩精品亚洲人成在线观看 久久综合给会久久狠狠狠 日韩精品亚洲人成在线观看 日韩国产欧美 亚洲成aⅴ人片在线影院八 亚洲精品1区 99久久精品免费 国产精品高清在线观看 国产精品久久久免费视频 在线亚洲欧美日韩 91在线看视频 国产精品96久久久久久久 欧美日韩国产成人精品 91在线亚洲 热久久亚洲 国产精品美女免费视频观看 日韩在线毛片 亚洲永久免费视频 九九免费在线视频 亚洲一区网站 日本高清二区视频久二区 精品国产美女福利在线 伊人久久艹 国产精品久久久久三级 欧美成人精品第一区二区三区 99久久精品国产自免费 在线观看日韩一区 国产中文字幕一区 成人免费午夜视频 欧美日韩另类在线 久久99国产精品成人欧美 色婷婷中文网 久久天天躁夜夜躁狠狠躁2020 欧美成人伊人久久综合网 国产精品福利资源在线 国产伦精品一区二区三区高清 国产精品亚洲综合色区韩国 亚洲一区欧美日韩 色综合视频 国语自产精品视频在线区 国产高清a 成人国内精品久久久久影 国产在线精品香蕉综合网一区 国产不卡在线看 国产成人精品精品欧美 国产欧美日韩综合精品一区二区三区 韩国电影一区二区 国产在线视频www色 91中文字幕在线一区 国产人成午夜免视频网站 亚洲综合一区二区三区 色综合视频一区二区观看 久久五月网 九九热精品在线观看 国产一区二区三区国产精品 99久热re在线精品996热视频 亚洲国产网 在线视频亚洲一区 日韩字幕一中文在线综合 国产高清一级毛片在线不卡 精品国产色在线 国产高清视频一区二区 精品日本久久久久久久久久 亚洲国产午夜精品乱码 成人免费国产gav视频在线 日韩欧美一区二区在线观看 欧美曰批人成在线观看 韩国电影一区二区 99re这里只有精品6 日韩精品一区二区三区视频 99re6久精品国产首页 亚洲欧美一区二区三区导航 欧美色图一区二区三区 午夜精品视频在线观看 欧美激情在线观看一区二区三区 亚洲热在线 成人国产精品一区二区网站 亚洲一级毛片在线播放 亚洲一区小说区中文字幕 亚洲午夜久久久久影院 国产自产v一区二区三区c 国产精品视频免费 久久调教视频 国产成人91激情在线播放 国产精品欧美亚洲韩国日本久久 久久亚洲日本不卡一区二区 91中文字幕网 成人国产在线视频 国产视频91在线 欧美成人精品第一区二区三区 国产精品福利在线 久久综合九色综合精品 欧美一区二区三区精品 久久国产综合尤物免费观看 久久99青青久久99久久 日韩精品免费 久久国产精品999 91亚洲视频在线观看 国产精品igao视频 色综合区 在线亚洲欧国产精品专区 国产一区二区三区在线观看视频 亚洲精品成人在线 一区二区国产在线播放 中文在线亚洲 亚洲精品第一国产综合野 国产一区二区精品久久 一区二区三区四区精品视频 99热精品久久 中文字幕视频二区 国产成人精品男人的天堂538 99精品影视 美女福利视频一区二区 久久午夜夜伦伦鲁鲁片 综合久久久久久久综合网 国产精品国产欧美综合一区 国产99视频在线观看 国产亚洲女在线精品 婷婷影院在线综合免费视频 国产亚洲3p一区二区三区 91成人爽a毛片一区二区 亚洲一区二区高清 国产欧美亚洲精品第二区首页 欧美日韩导航 亚洲高清二区 欧美激情观看一区二区久久 日韩毛片在线播放 亚洲欧美日韩高清中文在线 亚洲日本在线播放 国产精品一区二区制服丝袜 精品国产一区二区三区不卡 国产不卡在线看 国产欧美网站 四虎永久在线观看视频精品 国产黄色片在线观看 夜夜综合 一本色道久久综合狠狠躁篇 欧美亚洲综合另类在线观看 国产91在线看 伊人久久国产 欧美一区二区在线观看免费网站 国产精品久久久久三级 久久福利 日韩中文字幕a 亚洲午夜久久久久影院 91在线高清视频 国产亚洲一区二区三区啪 久久人精品 国产精品亚洲午夜一区二区三区 综合久久久久久 久久伊人一区二区三区四区 国产综合久久久久久 日韩一区精品视频在线看 国产精品日韩欧美制服 日本精品1在线区 99re视频 无码av免费一区二区三区试看 国产视频1区 日韩欧美中文字幕一区 日本高清中文字幕一区二区三区a 亚洲国产欧美无圣光一区 国产在线视频一区二区三区 欧美国产第一页 在线亚洲欧美日韩 日韩中文字幕第一页 在线不卡一区二区 伊人久久青青 国产精品一区二区在线播放 www.五月婷婷 麻豆久久婷婷国产综合五月 亚洲精品区 久久国产欧美另类久久久 99在线视频免费 伊人久久中文字幕久久cm 久久精品成人免费看 久久这里只有精品首页 88国产精品视频一区二区三区 中文字幕日本在线mv视频精品 国产在线精品成人一区二区三区 伊人精品线视天天综合 亚洲一区二区黄色 国产尤物视频在线 亚洲精品99久久久久中文字幕 国产一区二区三区免费观看 伊人久久大香线蕉综合电影网 国产成人精品区在线观看 日本精品一区二区三区视频 日韩高清在线二区 久久免费播放视频 一区二区成人国产精品 国产精品免费精品自在线观看 亚洲精品视频二区 麻豆国产精品有码在线观看 精品日本一区二区 亚洲欧洲久久 久久中文字幕综合婷婷 中文字幕视频在线 国产成人精品综合在线观看 91精品国产91久久久久福利 精液呈暗黄色 香蕉国产综合久久猫咪 国产专区精品 亚洲精品无码不卡 国产永久视频 亚洲成a人片在线播放观看国产 一区二区国产在线播放 亚洲一区二区黄色 欧美日韩在线观看视频 亚洲精品另类 久久国产综合尤物免费观看 国产一区二区三区国产精品 高清视频一区 国产精品igao视频 国产精品资源在线 久久综合精品国产一区二区三区 www.五月婷婷 精品色综合 99热国产免费 麻豆福利影院 亚洲伊人久久大香线蕉苏妲己 久久电影院久久国产 久久精品伊人 在线日韩理论午夜中文电影 亚洲国产欧洲综合997久久 伊人国产精品 久草国产精品 欧美一区精品二区三区 亚洲成人高清在线 91免费国产精品 日韩精品福利在线 国产一线在线观看 国产不卡在线看 久久99青青久久99久久 亚洲精品亚洲人成在线播放 99久久免费看国产精品 国产日本在线观看 青草国产在线视频 麻豆久久婷婷国产综合五月 国产中文字幕一区 91久久精品国产性色也91久久 国产一区a 国产欧美日韩成人 国产亚洲女在线精品 一区二区美女 中文字幕在线2021一区 在线小视频国产 久久这里只有精品首页 国产在线第三页 欧美日韩中文字幕 在线亚洲+欧美+日本专区 精品国产一区二区三区不卡 久久这里精品 欧美在线va在线播放 精液呈暗黄色 91精品国产手机 91在线免费播放 欧美视频亚洲色图 欧美国产日韩精品 日韩高清不卡在线 精品视频免费观看 欧美日韩一区二区三区四区 国产欧美亚洲精品第二区首页 亚洲韩精品欧美一区二区三区 国产精品视频免费 在线精品小视频 久久午夜夜伦伦鲁鲁片 国产无套在线播放 久热这里只精品99re8久 欧美久久久久 久久香蕉国产线看观看精品蕉 国产成人精品男人的天堂538 亚洲人成网站色7799在线观看 日韩在线第二页 一本色道久久综合狠狠躁篇 国产一区二区三区不卡在线观看 亚洲乱码在线 在线观看欧美国产 久久福利青草精品资源站免费 国产玖玖在线观看 在线亚洲精品 亚洲成aⅴ人在线观看 精品91在线 欧美一区二三区 日韩中文字幕视频在线 日本成人一区二区 日韩免费专区 国内精品在线观看视频 久久国产综合尤物免费观看 国产精品系列在线观看 一本一道久久a久久精品综合 亚洲免费播放 久久精品国产免费 久久人精品 亚洲毛片网站 亚洲成a人一区二区三区 韩国福利一区二区三区高清视频 亚洲精品天堂在线 一区二区三区中文字幕 亚洲国产色婷婷精品综合在线观看 亚洲国产成人久久笫一页 999国产视频 国产精品香港三级在线电影 欧美日韩一区二区三区四区 日韩国产欧美 国产精品99一区二区三区 午夜国产精品理论片久久影院 亚洲精品中文字幕麻豆 亚洲国产高清视频 久久免费手机视频 日韩a在线观看 五月婷婷亚洲 亚洲精品中文字幕麻豆 中文字幕丝袜 www国产精品 亚洲天堂精品在线 亚洲乱码一区 国产日韩欧美三级 久久999精品 伊人热人久久中文字幕 久热国产在线视频 国产欧美日韩在线观看一区二区三区 国产一二三区在线 日韩国产欧美 91精品国产91久久久久 亚洲一区小说区中文字幕 精品一区二区免费视频 国产精品视频免费 国产精品亚洲综合色区韩国 亚洲国产精品成人午夜在线观看 欧美国产日韩精品 中文字幕精品一区二区精品