日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于领域知识的Docker镜像自动构建方法

發(fā)布時間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于领域知识的Docker镜像自动构建方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

點(diǎn)擊上方藍(lán)字關(guān)注我們

基于領(lǐng)域知識的Docker鏡像自動構(gòu)建方法

陳偉1,2,?葉宏杰1,2,?周家宏1,2,?魏峻1,2

1?中國科學(xué)院大學(xué),北京 100190

2?中國科學(xué)院軟件研究所,北京 100190

?

摘要Dockerfile是構(gòu)建Docker應(yīng)用鏡像的腳本代碼,包含軟件系統(tǒng)鏡像構(gòu)建所需的軟件包及其依賴的下載、安裝和配置的所有指令。編寫Dockerfile需要豐富的領(lǐng)域知識,否則編寫的Dockerfile容易產(chǎn)生鏡像構(gòu)建錯誤。針對此問題,提出一種基于領(lǐng)域知識的Docker鏡像自動構(gòu)建方法。該方法通過對大規(guī)模Dockerfile的自動解析,分析提取構(gòu)建Docker鏡像所需的軟件依賴及安裝配置等領(lǐng)域知識;在面向特定軟件系統(tǒng)構(gòu)建鏡像時,從已構(gòu)建的領(lǐng)域知識庫中分析推斷指定軟件的依賴關(guān)系及安裝操作,生成Dockerfile來構(gòu)建Docker鏡像。實驗結(jié)果表明,該方法具有利用領(lǐng)域知識推斷系統(tǒng)依賴關(guān)系和軟件包安裝方式、生成不同軟件Dockerfile的能力。

關(guān)鍵詞Docker,?Dockerfile,?知識圖譜,?軟件包,?系統(tǒng)依賴

論文引用格式:

陳偉, 葉宏杰, 周家宏,? 等. 基于領(lǐng)域知識的Docker鏡像自動構(gòu)建方法[J]. 大數(shù)據(jù), 2021, 7(1): 64-75.

CHEN W, YE H J, ZHOU J H, et al. An approach to automatically building Docker images by using domain knowledge[J]. Big Data Research, 2021, 7(1): 64-75.


1 引言

在傳統(tǒng)軟件開發(fā)過程中,開發(fā)部署和運(yùn)行演化兩階段相互割裂,各階段數(shù)據(jù)匯聚與知識提煉、關(guān)聯(lián)與運(yùn)用程度低,難以快速響應(yīng)需求變化。為此,開發(fā)運(yùn)維一體化(DevOps)被提出,旨在加強(qiáng)開發(fā)和運(yùn)維部門之間的溝通協(xié)作,提高軟件運(yùn)行演化過程中生產(chǎn)活動的效率和質(zhì)量。DevOps的引入對軟件產(chǎn)品的開發(fā)、測試、交付和運(yùn)維有重要意義。

Docker是當(dāng)前主流的容器技術(shù),在DevOps中被廣泛使用。Docker容器是Docker鏡像的實例,封裝了軟件應(yīng)用程序及其系統(tǒng)依賴項(即操作系統(tǒng)和相關(guān)軟件包),構(gòu)建了保證軟件系統(tǒng)能夠正常運(yùn)行的環(huán)境。Docker鏡像成為DevOps中軟件系統(tǒng)構(gòu)建和發(fā)布的主流制品形式,Docker容器則成為復(fù)雜分布式系統(tǒng)部署和運(yùn)行的主流基本構(gòu)成。Dockerfile是基于領(lǐng)域特定語言(domain specific language,DSL)編寫的腳本代碼,用于構(gòu)建Docker鏡像,并實例化Docker容器。Dockerfile包含一組構(gòu)建Docker鏡像的指令序列,聲明了構(gòu)建鏡像時使用的操作系統(tǒng)、安裝的軟件包以及安裝順序等。

盡管Dockerfile被廣泛用于構(gòu)建Docker鏡像,但人工編寫Dockerfile十分復(fù)雜且容易出錯,Dockerfile質(zhì)量問題導(dǎo)致的Docker鏡像構(gòu)建失敗案例普遍存在。一方面,Dockerfile指定了鏡像構(gòu)建的系統(tǒng)環(huán)境配置,特別是軟件包之間的關(guān)聯(lián)和依賴、軟件包與操作系統(tǒng)的兼容性、軟件下載安裝的操作以及順序等,需要全面的領(lǐng)域知識;另一方面,人工編寫Dockerfile時的拼寫錯誤、語法錯誤、違反最佳實踐和Dockerfile壞味(bad smell)等質(zhì)量問題難以避免。例如,在為Python代碼片段構(gòu)建Docker容器運(yùn)行環(huán)境時,開發(fā)人員平均要花費(fèi)2 h編寫Dockerfile,但是仍難以保證Python代碼片段正確運(yùn)行。

本文提出了一種基于領(lǐng)域知識的Dockerfile自動生成方法,用于支持Docker鏡像的自動構(gòu)建。該方法首先自動解析Docker Hub上的大量Dockerfile,從中提取構(gòu)建Docker鏡像所需的細(xì)粒度知識,包括基礎(chǔ)鏡像、操作系統(tǒng)、系統(tǒng)軟件包的下載和安裝配置等,并通過軟件包在Dockerfile中的出現(xiàn)順序和共現(xiàn)性推斷軟件包之間的關(guān)聯(lián),構(gòu)建領(lǐng)域知識庫。在面向特定軟件系統(tǒng)構(gòu)建鏡像時,方法基于領(lǐng)域知識分析推斷指定軟件的系統(tǒng)依賴關(guān)系及其安裝操作,并生成Dockerfile,用于構(gòu)建Docker鏡像。在最后的實驗中,本文選取了100個不同類型的軟件系統(tǒng),并為其構(gòu)建容器鏡像,本文方法能夠為其中的73個軟件系統(tǒng)成功構(gòu)建Docker鏡像。實驗結(jié)果表明,本文方法在構(gòu)建軟件鏡像時能夠應(yīng)對軟件類型的多樣性,具有較好的鏡像構(gòu)建成功率。本文的工作主要有以下兩點(diǎn)貢獻(xiàn)。

● 提出了一種面向Docker鏡像構(gòu)建的領(lǐng)域知識圖譜自動構(gòu)建方法。本文方法提出了Docker鏡像構(gòu)建的領(lǐng)域知識圖譜元模型,并基于抽象語法樹(abstract language tree,AST)分析技術(shù)從大規(guī)模Dockerfile中提取各種類型的領(lǐng)域知識實體與關(guān)系,實現(xiàn)知識圖譜的構(gòu)建。

● 提出了一種Dockerfile的自動生成方法。本文方法根據(jù)知識圖譜推斷構(gòu)建目標(biāo)軟件系統(tǒng)鏡像所需的基礎(chǔ)鏡像、需要安裝的所有軟件包及安裝順序和操作,生成指令,并合成Dockerfile。

2 相關(guān)工作

DockerizeMe和FRISK與本文工作相關(guān)度較高。DockerizeMe主要解決Python代碼中因缺少第三方依賴而導(dǎo)致的導(dǎo)入錯誤(import error)問題,并通過構(gòu)建Docker鏡像來實現(xiàn)Python代碼的運(yùn)行環(huán)境。針對Python包依賴問題,DockerizeMe收集Python軟件包索引(Python package index,PyPI)上流行的前1萬個Python包及其資源,并從安裝和導(dǎo)入包過程的日志中提取包之間的依賴關(guān)系,建立Python包依賴庫。對于給定的Python代碼,DockerizeMe根據(jù)依賴庫推斷代碼的第三方依賴包,并將Python:2.7.13作為基礎(chǔ)鏡像構(gòu)建容器環(huán)境。FRISK的目標(biāo)是為問答論壇(如Stack Overflow)中問題的解決方案構(gòu)建復(fù)現(xiàn)環(huán)境,尤其是面向與服務(wù)器端開發(fā)相關(guān)的問題。FRISK預(yù)定義了幾個Dockerfile模板,用于創(chuàng)建具有多種語言環(huán)境和數(shù)據(jù)庫的服務(wù)器端Web框架運(yùn)行環(huán)境,主要面向Express.js、Rails 5、Django、Flask等。通過FRISK,用戶可以從模板Dockerfile開始修改,創(chuàng)建符合要求的Dockerfile,進(jìn)而生成相應(yīng)的Docker容器環(huán)境。但是,DockerizeMe和FRISK都僅僅面向特定的問題場景,難以很好地應(yīng)對軟件系統(tǒng)的多樣性及其資源依賴給Docker鏡像構(gòu)建帶來的困難。

除了上述兩項工作,還有其他工作關(guān)注與Docker相關(guān)的知識圖譜構(gòu)建和Dockerfile質(zhì)量問題。DockerPedia是一個面向軟件之間依賴關(guān)系以及安全漏洞信息的知識圖譜,基于輕量級的本體論(ontology),建立了不同概念之間的聯(lián)系。Binnacle工具集針對Dockerfiles構(gòu)建AST,然后使用頻繁子樹挖掘算法來挖掘Dockerfile編寫中的語義規(guī)則和最佳實踐。Lu Z G等人總結(jié)了Dockerfile中的4種壞味模式,并提出了一種基于狀態(tài)的靜態(tài)分析方法來檢測Dockerfile壞味。Wu Y W等人開展實證研究,總結(jié)了開源軟件中的Dockerfile壞味。Hassan F等人通過分析軟件環(huán)境的變化及其影響,向開發(fā)人員推薦Dockerfiles的更新。Cito J等人對Docker生態(tài)系統(tǒng)、Docker質(zhì)量問題和Dockerfiles的演變進(jìn)行了探索性的實證研究。

3 基于領(lǐng)域知識的Docker鏡像自動構(gòu)建方法

如圖1所示,基于領(lǐng)域知識的Docker鏡像自動構(gòu)建方法主要分為兩個階段:知識圖譜構(gòu)建和Docker鏡像自動生成,其中第二階段的重點(diǎn)在于Dockerfile的自動生成。


圖1???基于領(lǐng)域知識的Docker鏡像自動生成構(gòu)建流程

在知識圖譜構(gòu)建階段,本文方法從Docker Hub上收集大量Dockerfile,并自動解析,從基于解析構(gòu)建的Dockerfile AST中抽取出實體和關(guān)系,并基于定義的知識圖譜元模型構(gòu)建知識圖譜。

在Docker鏡像自動生成階段,對于用戶指定需要安裝的目標(biāo)軟件,本文方法從知識圖譜中推斷構(gòu)建Docker鏡像所需的基礎(chǔ)鏡像和該軟件包關(guān)聯(lián)的其他軟件包,并確定相應(yīng)的安裝配置順序和方式。最后,方法根據(jù)分析結(jié)果構(gòu)造Dockerfile指令,并合成Dockerfile,進(jìn)而基于Dockerfile構(gòu)建鏡像。

4 數(shù)據(jù)收集與知識圖譜構(gòu)建

數(shù)據(jù)收集與知識圖譜的構(gòu)建主要包括以下步驟:

步驟1 基于網(wǎng)絡(luò)爬蟲獲取Docker Hub上的Docker項目及其對應(yīng)的Dockerfile等數(shù)據(jù);

步驟2 解析Dockerfile,并構(gòu)建AST;

步驟3 從Dockerfile的AST中識別各種類型的實體以及實體間的關(guān)系;

步驟4 基于知識圖譜元模型,整合解析得到的各類型實體和關(guān)系,生成知識圖譜。

4.1 知識圖譜元模型

領(lǐng)域知識圖譜元模型M由實體集合En和關(guān)系集合Re構(gòu)成,即M=(En,Re)。元模型結(jié)構(gòu)如圖2所示,主要包括8種類型的實體(Docker項目、Dockerfile、Docker鏡像、操作系統(tǒng)、操作系統(tǒng)版本、軟件包安裝工具、軟件包版本、軟件);以及8種類型的關(guān)系(包含、構(gòu)建、基于、實例化、使用、安裝、兼容、關(guān)聯(lián)),涵蓋了Dockerfile自動生成所需的多種知識。元模型表達(dá)的語義知識包括:Docker項目包含Docker鏡像和構(gòu)建該鏡像所使用的Dockerfile;Docker鏡像可以依賴其他鏡像,即將其他鏡像作為構(gòu)建時的基礎(chǔ)鏡像;Docker鏡像中包含使用的操作系統(tǒng)信息,以及安裝的軟件包及其版本信息;軟件包可以通過包管理軟件安裝,或者通過下載、配置、編譯的方式安裝;操作系統(tǒng)有不同的版本,不同操作系統(tǒng)安裝軟件包的方式不同,不同版本的操作系統(tǒng)可安裝的軟件包也不同;軟件是軟件包安裝后的實例;軟件包之間可能存在關(guān)聯(lián)或依賴關(guān)系,這種關(guān)系決定了多個軟件包在下載安裝時需按照一定的先后順序執(zhí)行。

圖2???領(lǐng)域知識圖譜元模型

4.2 數(shù)據(jù)獲取

構(gòu)建知識圖譜需要將大量的Docker項目和Dockerfile作為知識源。Docker Hub是Docker官方維護(hù)的大型公共Docker倉庫,包含數(shù)以百萬計的Docker項目,但是沒有提供完整的項目列表和查詢接口。針對這些問題,本文設(shè)計并實現(xiàn)了一個高效的爬蟲工具,自動爬取Docker Hub中的海量項目數(shù)據(jù)。爬蟲工具的工作流程如下:

● 針對缺少完整Docker項目列表的問題,爬蟲實現(xiàn)了一個基于英文字母組合的檢索關(guān)鍵詞生成機(jī)制,使得檢索結(jié)果能夠覆蓋所有的Docker項目;

● 以不同的關(guān)鍵詞在Docker Hub上進(jìn)行檢索,獲得以各個關(guān)鍵詞開頭的Docker項目列表;

● 針對海量數(shù)據(jù)的爬取效率問題,實現(xiàn)了基于多線程的并行爬取流程,通過多個線程的并行執(zhí)行來提高Docker Hub上Docker項目的獲取效率。

目前本文工作已經(jīng)收集了約110萬個Docker項目的信息和約96萬份Dockerfile。

4.3 Dockerfile解析

Dockerfile解析包括兩個階段:Dockerfile預(yù)處理;構(gòu)建Dockerfile對應(yīng)的AST。

Dockerfile中的指令主要包括FROM指令、ENV指令和RUN指令等。其中, FROM指令用于指定基礎(chǔ)鏡像,ENV指令用于定義環(huán)境變量,RUN指令用于聲明構(gòu)建基礎(chǔ)鏡像時需要運(yùn)行的bash命令行指令。例如,在圖3的Dockerfile中,第1行FROM指令指出當(dāng)前Docker鏡像是基于centos鏡像、centos7版本構(gòu)建的;第3行ENV指令定義了兩個環(huán)境變量LANG和LC_ALL,取值都為C.UTF-8;第6~8行RUN指令指出構(gòu)建鏡像時需要運(yùn)行yum install指令,安裝wget、bzip2、ca-certificates等軟件包。


圖3???示例Dockerfile(1)

Dockerfile預(yù)處理主要解析環(huán)境變量定義指令,并在隨后出現(xiàn)的指令中將環(huán)境變量替換為對應(yīng)的值,即通過預(yù)處理實現(xiàn)環(huán)境變量的實例化。解析環(huán)境變量包括以下兩個步驟。

步驟1 解析環(huán)境變量定義指令。ENV指令的格式可以表示為“ENV key value”,其中,key表示環(huán)境變量的名稱, value表示環(huán)境變量的值。因此,可以構(gòu)建名-值映射表Map<key,value>來存儲環(huán)境變量。對于每一條ENV語句,提取其中的key和value,并存入映射表中,實現(xiàn)對環(huán)境變量定義指令的解析。

步驟2 替換后續(xù)指令中出現(xiàn)的環(huán)境變量。在Dockerfile中使用環(huán)境變量時,環(huán)境變量以“$”開頭。以此為依據(jù)提取每一條指令中出現(xiàn)的環(huán)境變量的名稱,在映射表中查找對應(yīng)的值,完成環(huán)境變量實例的替換。

圖4是一份帶有環(huán)境變量的Dockerfile,經(jīng)過環(huán)境變量解析,共解析出ANDROID_NDK_VERSION、COCOS2D_X_VERSION、NDK_HOME 3個環(huán)境變量,并進(jìn)一步對第5、8、9、10、11行環(huán)境變量的值進(jìn)行替換,最終轉(zhuǎn)換成為如圖5所示的Dockerfile。

圖4???示例Dockerfile(2)

圖5???環(huán)境變量替換后的Dockerfile(2)

完成環(huán)境變量替換后,本文方法考慮Dockerfile指令和嵌套的bash指令的不同語法,設(shè)計了以下兩階段的Dockerfile指令解析方法,從而構(gòu)建AST。

● 以Docker項目的名稱為根節(jié)點(diǎn),將每條指令解析為根節(jié)點(diǎn)的一個葉節(jié)點(diǎn),用指令的名稱表示;

● 關(guān)注指令后的文本。有些指令后的文本仍是Dockerfile指令的語法,如FROM、ENV等指令。對于這些指令,仍使用Dockerfile指令的語法解析器進(jìn)行解析,生成相應(yīng)的葉節(jié)點(diǎn)。有些語句指令后的文本嵌套的是bash指令的語法,如RUN、CMD等指令。對于這些指令,使用bash指令的語法解析器進(jìn)行解析,生成相應(yīng)的葉節(jié)點(diǎn)。

例如,圖3的Dockerfile生成的AST如圖6所示。其中,淺色節(jié)點(diǎn)是使用Dockerfile語法解析器解析生成的節(jié)點(diǎn),深色節(jié)點(diǎn)是使用bash語法解析器解析生成的節(jié)點(diǎn)。

圖6???Dockerfile(1)對應(yīng)的AST

4.4 實體和關(guān)系識別

得到Dockerfile對應(yīng)的AST后,本文方法進(jìn)一步從中識別實體及其之間關(guān)系,主要包括:基礎(chǔ)鏡像和操作系統(tǒng)識別、軟件包識別、軟件包關(guān)聯(lián)識別。

對于基礎(chǔ)鏡像和操作系統(tǒng)識別, Dockerfile中的FROM指令聲明了當(dāng)前Docker鏡像的基礎(chǔ)鏡像。本文方法對AST中以FROM節(jié)點(diǎn)為根的子樹進(jìn)行分析,得到基礎(chǔ)鏡像信息。鏡像具有傳遞依賴性,且依賴于某個操作系統(tǒng)鏡像。首先判斷當(dāng)前鏡像imgdf是否是操作系統(tǒng)鏡像,或者基礎(chǔ)鏡像imgbase是否是操作系統(tǒng)鏡像,如果是,則得到操作系統(tǒng)信息;否則,解析imgbase的Dockerfile,判斷imgbase的基礎(chǔ)鏡像是否是操作系統(tǒng)鏡像,重復(fù)該過程,直到發(fā)現(xiàn)操作系統(tǒng)鏡像,得到操作系統(tǒng)信息。

對于軟件包識別,根據(jù)Dockerfile對軟件包的安裝方式,本文首先將軟件包分為官方軟件包(officially packaged software,OPS)和非官方軟件包(un officially packaged software,UOPS)兩類。OPS指登記在公共倉庫中、統(tǒng)一管理的軟件包,可以通過apt/apt-get、YUM等包管理工具自動安裝、管理和卸載。UOPS指無法通過包管理工具自動下載、安裝的軟件,通常以壓縮文件或Git倉庫的形式存在,并由唯一的統(tǒng)一資源定位器(uniform resource locator,URL)指定軟件包下載地址,開發(fā)者和用戶通常需要下載并進(jìn)行解壓和編譯,再執(zhí)行相應(yīng)的安裝操作。以圖3的Dockerfile為例,第6行中的wget、bzip2等是OPS,可以通過包管理工具YUM進(jìn)行下載;而第10行中的https://repo.continuum.io/archive/Anaconda35.1.0-Linux-x86_64.sh是UOPS,需要通過下載、解壓、切換工作目錄、運(yùn)行安裝程序等步驟才能安裝。

對于OPS,如前所述,apt/apt-get、YUM、dnf等常見的包管理工具提供了OPS的安裝能力,可以通過相應(yīng)的包管理器命令進(jìn)行下載安裝。對RUN節(jié)點(diǎn)的子樹進(jìn)行分析,得到bash語句中的指令節(jié)點(diǎn)和參數(shù)節(jié)點(diǎn),當(dāng)指令節(jié)點(diǎn)是包管理器的安裝命令(如apt-get install、yum install等)時,提取參數(shù)節(jié)點(diǎn)進(jìn)一步分析。首先通過yumshowduplicates list、apt-cache pkgnames等命令獲取各個包管理器中所有可安裝的軟件包列表,之后通過包名匹配的方式確定當(dāng)前語句安裝的軟件包及其版本。例如,對于圖3第6行(對應(yīng)圖6中AST第三棵子樹),本文方法可以分析出語句安裝了wget、bzip2和ca-certificates等包。

對于UOPS,本文方法關(guān)注wget、cURL、Git等常用于下載UOPS的bash指令。由于UOPS并沒有對軟件進(jìn)行統(tǒng)一命名,本方法使用下載的URL作為UOPS的唯一標(biāo)識,并通過URL解析的方式,在下載指令的參數(shù)節(jié)點(diǎn)中確定安裝的UOPS。額外地,本文方法通過爬蟲驗證下載鏈接是否可訪問,以保證UOPS的有效性。

對于軟件包關(guān)聯(lián)識別,經(jīng)過軟件包識別,本文方法可獲取當(dāng)前Dockerfile安裝的軟件包集合PKG={pkg1,pkg2,…,pkgn}?;贒ockerfile進(jìn)行Docker鏡像構(gòu)建時,軟件包的安裝是有序的。本方法以關(guān)聯(lián)<pkgi,pkgj>的形式記錄兩個包pkgi和pkgj在當(dāng)前Dockerfile中的安裝順序,表示pkgi先于pkgj安裝,作為軟件包之間的關(guān)聯(lián)。

4.5 知識圖譜構(gòu)建

基于第4.1節(jié)定義的知識圖譜元模型,本文方法將所有Dockerfile解析提取得到的實體和關(guān)系整合寫入知識圖譜Gdf=(V,E),其中,V為頂點(diǎn)集合,E為邊集合;V對應(yīng)元模型M中的實體集合En,每個頂點(diǎn)v代表一個唯一的實體,其類型為Docker鏡像、軟件包、操作系統(tǒng)等;E對應(yīng)M中的關(guān)系集合Re,邊eij代表兩個頂點(diǎn)vi、vj之間的關(guān)系(即兩個實體之間的關(guān)系),并用邊的權(quán)重表示該關(guān)系在所有Dockerfile中出現(xiàn)的頻數(shù)。當(dāng)邊eij連接的兩個頂點(diǎn)vi、vj代表兩個軟件包時,則eij表示兩者之間的先后安裝順序,如果eij和eji同時出現(xiàn)在知識圖譜中,則說明兩個軟件包之間并沒有依賴關(guān)系,可以以任意順序安裝。

經(jīng)過對約22萬份高質(zhì)量的Dockerfile進(jìn)行分析,本文方法建立了一個含有約90萬個頂點(diǎn)和約290萬條邊的知識圖譜。

5 Dockerfile自動生成方法

給定一個軟件包(尤其是UOPS,因為典型的OPS可以通過特定的包管理器自動下載安裝),生成對應(yīng)的Dockerfile需要考慮以下幾方面:基礎(chǔ)鏡像、需要安裝的軟件包、軟件包的安裝順序。因此,本文方法的任務(wù)是根據(jù)給定的軟件包s,在知識圖譜Gdf中挖掘提取出三元組Ks=(imgbase,PKGs, seqs),其中,imgbase表示安裝s時使用的基礎(chǔ)鏡像;PKGs表示安裝s時需要安裝的所有軟件集合(包括s本身);seqs表示PKGs中所有軟件的安裝順序集合,安裝順序以軟件對&lt;pkgi,pkgj&gt;的形式出現(xiàn)。

5.1 基礎(chǔ)鏡像推薦

基礎(chǔ)鏡像推薦包括兩步:在Gdf中找到候選基礎(chǔ)鏡像集合;候選基礎(chǔ)鏡像排序。

首先,本文方法在Gdf中進(jìn)行搜索,找到所有安裝了給定軟件包s的鏡像。如果用戶指定了操作系統(tǒng),則再根據(jù)操作系統(tǒng)篩選出滿足用戶需求的鏡像,生成候選鏡像集合。

得到候選鏡像集合后,本文方法根據(jù)鏡像的流行度進(jìn)行排序。鏡像的流行度指一個鏡像被選作其他鏡像的基礎(chǔ)鏡像的次數(shù)。排序后,將流行度最高的鏡像作為安裝s時使用的基礎(chǔ)鏡像imgbase。

5.2 關(guān)聯(lián)軟件包分析

軟件包間的關(guān)聯(lián)具有傳遞性,故在Gdf中,從s對應(yīng)的頂點(diǎn)開始,采用廣度優(yōu)先搜索(breadth first search,BFS)算法找到所有與s關(guān)聯(lián)的包,生成Gdf的子圖Gs。子圖中所有頂點(diǎn)即需要安裝的軟件包集合PKGs。

部分關(guān)聯(lián)出現(xiàn)次數(shù)較少,可信度較低。因此,本文方法提出關(guān)聯(lián)度cor(pkgi,pkgj)這一指標(biāo),評判兩個軟件包pkgi、pkgj之間存在關(guān)聯(lián)的可信度。BFS只會搜索關(guān)聯(lián)度高于設(shè)定閾值的邊。關(guān)聯(lián)度計算方法如下。

● 當(dāng)軟件包pkgi和pkgj之間只存在一條邊時,cor(pkgi, pkgj)的計算方法如式(1)所示。其中,w(i, j)表示知識圖譜中邊eij的權(quán)重,即所有Dockerfile中pkgi和pkgj共同被安裝的次數(shù)。|pkgi|表示在所有Dockerfile中,pkgi被安裝的次數(shù)。若軟件包pkgi和pkgj之間只存在一條邊,且關(guān)聯(lián)度高于閾值,則說明pkgi和pkgj之間存在依賴關(guān)系,pkgi需要在pkgj之前安裝。

● 當(dāng)軟件包pkgi和pkgj之間存在兩條邊時,cor(pkgi,pkgj)的計算方法如式(2)所示。其中,w(i, j)+w(j, i)表示在所有Dockerfile中pkgi和pkgj共同被安裝的次數(shù),|pkgi|+|pkgj|表示所有Dockerfile中pkgi被安裝的次數(shù)和pkg?j被安裝的次數(shù)之和。軟件包pkgi和pkgj之間存在兩條邊,且關(guān)聯(lián)度高于閾值,只能說明兩個包之間存在關(guān)聯(lián),兩個軟件包可以以任意順序安裝。

5.3 軟件包安裝順序推斷

為了確定軟件包的安裝順序,需要對子圖Gs中的各個頂點(diǎn)進(jìn)行拓?fù)渑判?。排序前需要消除Gs中的環(huán)。如果環(huán)中的頂點(diǎn)數(shù)為2,則刪除環(huán)中的所有邊,因為這兩個軟件包可以以任意順序安裝;如果環(huán)中的頂點(diǎn)數(shù)大于2,則刪除環(huán)中關(guān)聯(lián)度最小的邊。消除環(huán)后,本文方法對各個頂點(diǎn)進(jìn)行拓?fù)渑判?#xff0c;排序的結(jié)果即軟件包的安裝順序seqs。

5.4 Dockerfile生成

根據(jù)基礎(chǔ)鏡像、需要安裝的軟件包及安裝順序,本方法生成Dockerfile的步驟如下。

● 根據(jù)基礎(chǔ)鏡像imgbase,生成指令FROMimgbase。

● 根據(jù)軟件包的安裝順序,逐條生成各個軟件包的安裝指令。

● 對于OPS,在知識圖譜中找到該軟件包對應(yīng)的包管理器,生成運(yùn)行包管理器安裝該軟件包的RUN指令。例如,若軟件包pkg的包管理器是apt-get,則會生成指令RUN apt-get install -y pkg[=version],以安裝該軟件包。

● 對于UOPS,本文發(fā)現(xiàn)在Dockerfile中,每個UOPS安裝語句前后通常會有空行,形成一個獨(dú)立的指令塊(如圖3中第9~16行對anaconda的安裝)。因此,以空行進(jìn)行劃分可以得到UOPS的安裝方式。從中選取使用頻率最高的安裝方式,生成對UOPS的安裝指令塊。

6 實驗與分析

本文所有實驗都在一臺8核3.50 GHz、32 GB內(nèi)存的機(jī)器上進(jìn)行,操作系統(tǒng)為Ubuntu 18.04.01 LTS,使用的Docker版本為19.03.6,設(shè)置的關(guān)聯(lián)度閾值為0.5。

6.1 實驗方法

本文通過實驗驗證筆者提出的方法是否能夠為給定的軟件包生成Dockerfile,并成功構(gòu)建Docker鏡像。本文在開源社區(qū)(如GitHub、Apache Software Foundation等)中隨機(jī)選取了100個UOPS進(jìn)行實驗,即使用本文方法生成Dockerfile,并驗證是否能根據(jù)該Dockerfile成功構(gòu)建鏡像和運(yùn)行UOPS。在100個UOPS中,49個來自GitHub,其余51個來自其他倉庫,并涵蓋了各種類型的軟件,如系統(tǒng)軟件、開發(fā)工具、應(yīng)用軟件等。經(jīng)過檢驗,這100個UOPS的下載鏈接均是有效的。表1列出了選取的100個UOPS的詳細(xì)信息。此外,為了進(jìn)一步說明方法的有效性,本文嘗試生成8個常見的基于Docker的Web框架(包括Express. js、Rails 5和Django等)的Dockerfile,與FRISK進(jìn)行對比。

本文使用以下兩個指標(biāo)分析實驗結(jié)果。

● 構(gòu)建成功率(build success rate, BSR):表示Dockerfile成功構(gòu)建鏡像的比率,計算方法如式(3)所示,其中|DFtotal|表示生成Dockerfile的總數(shù),|DFbs|表示基于生成的Dockerfile能夠成功構(gòu)建鏡像的數(shù)量。

● 配置成功率(configuration success rate,CSR):表示Dockerfile成功構(gòu)建鏡像,并使得給定軟件能夠正確運(yùn)行的比率,計算方法如式(4)所示,其中|DFcs|表示成功運(yùn)行的鏡像的數(shù)量。

6.2 實驗結(jié)果與分析

通過本文方法生成Dockerfile后,使用“docker build”命令構(gòu)建Docker鏡像,人工觀察構(gòu)建結(jié)果,并統(tǒng)計分析構(gòu)建失敗的原因。結(jié)果顯示,在10 0個軟件包中,73個軟件包對應(yīng)的Dockerfile能夠成功構(gòu)建鏡像(BSR=73%),59個軟件包對應(yīng)的Dockerfile不僅可以成功構(gòu)建鏡像,而且能正確運(yùn)行鏡像中的軟件(CSR=59%)。另外,對于8個常見的Web框架,本文方法均成功生成Dockerfile,并使得框架能夠正確運(yùn)行。結(jié)果表明,本文方法具有利用領(lǐng)域知識推斷系統(tǒng)依賴關(guān)系和軟件包安裝方式的能力,能夠自動生成不同軟件的Dockerfile。

本文對生成的100份Dockerfile進(jìn)行分析,發(fā)現(xiàn)以下兩點(diǎn)。

● 最常被安裝的軟件包是cURL,其次是wget、tar、Git和GNU Make等,分布如圖7所示。這些軟件包主要用于下載、解壓和編譯UOPS。

● Ubuntu操作系統(tǒng)鏡像最常被作為基礎(chǔ)鏡像,被作為基礎(chǔ)鏡像的比率達(dá)到47%。

本文對構(gòu)建失敗的Dockerfile進(jìn)行分析。構(gòu)建失敗的主要原因如下。

● 基礎(chǔ)鏡像獲取失敗:Docker Hub上存儲的基礎(chǔ)鏡像丟失或無法訪問,無法拉取基礎(chǔ)鏡像構(gòu)建新的鏡像。5份Dockerfile構(gòu)建失敗的原因是基礎(chǔ)鏡像獲取失敗。

● 依賴缺失:沒能在知識圖譜中建立軟件包完整的依賴關(guān)系,導(dǎo)致軟件包無法成功安裝。6份Dockerfile構(gòu)建失敗的原因是依賴關(guān)系缺失。

● 文件路徑錯誤:構(gòu)建Docker鏡像時,訪問了已經(jīng)不存在的文件路徑。6份Dockerfile構(gòu)建失敗的原因是文件路徑錯誤。

● 其他錯誤:包括字符集編碼錯誤、授權(quán)無效等。10份Dockerfile構(gòu)建失敗的原因是其他錯誤。

同時,本文對配置失敗的Dockerfile進(jìn)行分析,發(fā)現(xiàn)配置失敗的主要原因是不完整配置,即在軟件包安裝指令中,缺少一些必要的指令(如環(huán)境配置指令、文件操作指令等),使得Docker鏡像無法正確運(yùn)行 。

筆者認(rèn)為,可以從以下方面進(jìn)一步改進(jìn),減少構(gòu)建失敗和配置失敗。

● 完善知識圖譜:繼續(xù)從Docker Hub和GitHub等開源社區(qū)收集Docker項目,解析Dockerfile,并提取軟件包之間的關(guān)聯(lián),進(jìn)一步提高知識圖譜的完整性。

圖7???常用軟件包統(tǒng)計

● 資源有效性檢測:在使用資源(包括基礎(chǔ)鏡像和軟件包等)前預(yù)先訪問,以確保資源的有效和可訪問。

● UOPS配置模式總結(jié):UOPS的安裝配置主要包括下載、解壓、編譯和建立鏈接等步驟,因此可以進(jìn)一步總結(jié)UOPS的配置模式,用于完善軟件安裝所必需的相關(guān)指令。

7 結(jié)束語

本文提出了一種基于領(lǐng)域知識的Docker鏡像自動生成方法。該方法通過對數(shù)十萬的Dockerfile進(jìn)行解析,提取其中與鏡像構(gòu)建相關(guān)的實體和關(guān)系等知識,構(gòu)建Docker領(lǐng)域知識圖譜。對于給定需要構(gòu)建鏡像的軟件包,該方法通過知識圖譜推斷目標(biāo)軟件的基礎(chǔ)鏡像、所有需要安裝的依賴軟件包以及安裝順序,在此基礎(chǔ)上生成Dockerfile,并進(jìn)一步構(gòu)建面向目標(biāo)軟件的Docker鏡像。實驗結(jié)果顯示,該方法具有利用領(lǐng)域知識推斷系統(tǒng)依賴關(guān)系和軟件包安裝方式的能力,能夠自動生成面向不同軟件的Dockerfile和Docker鏡像。在未來的研究中,筆者認(rèn)為可以從提高知識圖譜完整性、Dockerfile優(yōu)化、語言層包依賴解析等方面著手,進(jìn)一步提高Docker鏡像的自動生成能力。

作者簡介

陳偉(1980-),男,博士,中國科學(xué)院軟件研究所副研究員,中國計算機(jī)學(xué)會會員,主要研究方向為軟件工程、網(wǎng)絡(luò)分布式計算等。

葉宏杰(1996-),男,中國科學(xué)院軟件研究所碩士生,主要研究方向為軟件工程。

周家宏(1995-),男,中國科學(xué)院軟件研究所碩士生,主要研究方向為機(jī)器學(xué)習(xí)、知識圖譜等。

魏峻(1970-),男,博士,中國科學(xué)院軟件研究所研究員、博士生導(dǎo)師,主要研究方向為軟件工程、網(wǎng)絡(luò)分布式計算等。

聯(lián)系我們:

Tel:010-81055448

? ? ? ?010-81055490

? ? ? ?010-81055534

E-mail:bdr@bjxintong.com.cn?

http://www.infocomm-journal.com/bdr

http://www.j-bigdataresearch.com.cn/

轉(zhuǎn)載、合作:010-81055537

大數(shù)據(jù)期刊

《大數(shù)據(jù)(Big Data Research,BDR)》雙月刊是由中華人民共和國工業(yè)和信息化部主管,人民郵電出版社主辦,中國計算機(jī)學(xué)會大數(shù)據(jù)專家委員會學(xué)術(shù)指導(dǎo),北京信通傳媒有限責(zé)任公司出版的期刊,已成功入選中文科技核心期刊、中國計算機(jī)學(xué)會會刊、中國計算機(jī)學(xué)會推薦中文科技期刊,并被評為2018年、2019年國家哲學(xué)社會科學(xué)文獻(xiàn)中心學(xué)術(shù)期刊數(shù)據(jù)庫“綜合性人文社會科學(xué)”學(xué)科最受歡迎期刊。

關(guān)注《大數(shù)據(jù)》期刊微信公眾號,獲取更多內(nèi)容

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的基于领域知识的Docker镜像自动构建方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

国产日韩欧美在线播放 | 日韩视频一区二区在线观看 | 99精品国产兔费观看久久99 | 黄色av网站在线观看 | 国产成人亚洲精品自产在线 | 伊人色综合网 | 天天综合久久综合 | 久久久久免费精品视频 | 91在线www | 亚洲日本成人网 | 国产一二区免费视频 | 性色av一区二区 | 国产精品视频在线看 | 依人成人综合网 | 欧美成人区 | 日日爽天天 | 久久国产午夜精品理论片最新版本 | wwwwww国产| 国产精品露脸在线 | 精品国产一区二区三区蜜臀 | 色亚洲激情 | 成人在线视频观看 | 97视频亚洲 | 国产精品久久久区三区天天噜 | 在线播放日韩av | 久久五月精品 | 欧美久久成人 | 久艹视频在线观看 | 国产精品不卡 | 亚洲婷婷在线 | 国产精品久久久久久久久久久不卡 | 国产在线精品视频 | 精品一二三四视频 | 国产成人香蕉 | 久久久.com| 最近中文字幕高清字幕免费mv | 久久久久久欧美二区电影网 | 97超碰国产精品 | 99成人精品 | 中文免费观看 | 超碰.com| 五月婷婷综合在线视频 | 国产高清视频免费最新在线 | www.亚洲视频.com| 在线精品观看国产 | 成人片在线播放 | 91香蕉视频在线 | 久久99中文字幕 | 日韩视频精品在线 | 亚洲免费一级 | 中文字幕在线观看三区 | 日本精品视频一区二区 | 国产一二区视频 | 夜夜操网 | 白丝av免费观看 | 国产我不卡 | 在线观看国产福利片 | 一二三区高清 | 午夜黄色| 日韩免费看 | 国产精品av免费观看 | 一级久久精品 | 国产精品免费一区二区 | 亚洲天天摸日日摸天天欢 | 亚洲日韩中文字幕在线播放 | 精品在线视频播放 | 天天射天天干天天 | 国产精品成人自产拍在线观看 | 国产精品精品久久久 | 91免费视频国产 | 欧美亚洲xxx | 美女国产网站 | 国产69精品久久久久久 | 日韩在线资源 | 久久成人精品电影 | 五月激情片 | 欧美久久久久久久久久 | 日批网站免费观看 | 国产高清在线精品 | www日韩视频| 黄色网中文字幕 | 国产视频1区2区3区 久久夜视频 | 免费在线视频一区二区 | 精品一区精品二区 | 丝袜美腿亚洲综合 | 日韩在线电影一区二区 | 国产精品一区二区在线观看免费 | 婷婷色在线 | 精品播放 | 成人黄色在线电影 | 久久成人高清 | 国产精品久久麻豆 | 92精品国产成人观看免费 | 天天干,天天干 | 国产精品久久久久久久久久久久久久 | 亚洲精品久久视频 | 日韩欧美电影 | 精品久久久久一区二区国产 | 日韩成人免费在线 | 国内久久 | 最近中文字幕免费av | 国产色道 | 在线观看成人毛片 | 国产精品伦一区二区三区视频 | 国产区在线看 | www亚洲视频 | 色婷婷综合成人av | 国内精品视频一区二区三区八戒 | 中文字幕人成一区 | 久久国产成人午夜av影院宅 | 在线成人免费电影 | 91丨九色丨国产丨porny精品 | 国产女做a爱免费视频 | 中文字幕日韩在线播放 | 欧美亚洲国产精品久久高清浪潮 | 中文区中文字幕免费看 | 韩国av免费在线 | 久久久国产一区 | 欧洲av在线 | a级成人毛片| 精品人人人人 | 国产美女主播精品一区二区三区 | 91精品视屏 | 在线成人一区二区 | 8x成人免费视频 | av在线免费观看黄 | 久久免费高清 | 992tv成人免费看片 | 天天干天天操天天爱 | 在线视频一区二区 | 成人在线黄色 | 日韩精品一区电影 | 国产日韩亚洲 | 国产乱码精品一区二区三区介绍 | 久久国产视屏 | av片一区 | 国产一区二区在线视频观看 | 日韩一区二区三区在线观看 | 国产a级免费| 99久久www | 日韩欧美国产精品 | 天天干天天草天天爽 | 亚洲视频久久久 | 久草在线久| 欧洲黄色片 | 色资源在线观看 | 国产永久免费高清在线观看视频 | 久久久激情网 | av.com在线| 国产精品久久久久久久午夜 | 久久久首页 | 久草在线精品观看 | 欧美性黄网官网 | 九九在线视频 | 日韩成片 | 日韩欧美在线高清 | 亚洲播播 | 国产精品美女久久久久久 | 丁香花中文在线免费观看 | 久久久久五月 | 国产亚州av| 亚洲一区日韩在线 | 伊人五月天综合 | 日韩欧美在线中文字幕 | 亚洲视频一区二区三区在线观看 | 日韩中文字幕第一页 | 欧美视频一区二 | 亚洲精品一区二区三区高潮 | 婷婷激情欧美 | 91香蕉视频好色先生 | 黄色三级在线观看 | 亚洲日日日 | 欧美a影视 | 国产一区二区三区网站 | 亚州精品天堂中文字幕 | 日韩资源在线 | 97夜夜澡人人双人人人喊 | 1000部国产精品成人观看 | 怡红院av| 国精产品满18岁在线 | 操久在线 | 麻豆av一区二区三区在线观看 | 亚洲福利精品 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 亚洲欧美视频一区二区三区 | av大全在线播放 | 九九精品视频在线 | 狠狠色丁香久久婷婷综合五月 | 亚洲欧美日韩精品一区二区 | 欧美精品久久久久久久久久白贞 | 久久久国产精品人人片99精片欧美一 | 国产老熟 | 日本精品中文字幕在线观看 | 夜夜操狠狠操 | 美女福利视频一区二区 | 人人爽人人爽人人爽人人爽 | 亚洲最大在线视频 | 97色婷婷人人爽人人 | 亚洲精品久久久久久久不卡四虎 | 成人avav| 亚洲干 | 午夜在线观看 | 国产五码一区 | 午夜精品中文字幕 | 草久久影院 | 免费在线观看av不卡 | 中文字幕在线视频国产 | a黄色一级 | 国产看片 色 | 欧美一级裸体视频 | 日韩一区二区三区视频在线 | 亚洲手机天堂 | 久久精品婷婷 | 久久久午夜精品福利内容 | 超级av在线 | 欧美激情视频免费看 | 日韩有码在线播放 | 精品毛片一区二区免费看 | 亚洲精品乱码久久久久久9色 | 亚洲成av人片一区二区梦乃 | 久久99精品波多结衣一区 | 免费在线观看成年人视频 | 久久精品黄| 国产小视频免费观看 | 四季av综合网站 | 日韩艹| 六月色丁香 | 麻豆国产精品永久免费视频 | 成年人免费观看在线视频 | 国产一区免费在线观看 | 中文字幕精品三级久久久 | 国产精品自产拍在线观看中文 | 久久视频精品在线 | 最近最新最好看中文视频 | 久综合网| 精品久久一区二区 | 狠狠五月婷婷 | 精品毛片一区二区免费看 | 国产欧美最新羞羞视频在线观看 | 中文字幕第一页在线 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 丰满少妇一级片 | 最近中文字幕完整视频高清1 | 草久在线| 国产亚洲综合精品 | 四虎影视精品 | av成人在线看 | 日本精品午夜 | 免费在线国产黄色 | 三级视频片 | 久草在线在线精品观看 | 国产91电影在线观看 | 欧美成人猛片 | 亚洲国产精品日韩 | 麻豆91网站 | japanesexxxxfreehd乱熟 | 亚洲视频 中文字幕 | 黄视频网站大全 | av在线看网站| 国产一级视频在线免费观看 | 午夜 久久 tv | 久久午夜影视 | 日韩 在线 | 日狠狠 | 成人免费一区二区三区在线观看 | 天天爽夜夜爽人人爽曰av | 91精品在线观看入口 | 日韩欧美高清在线观看 | 一区二区中文字幕在线 | 五月天久久久 | 91成人在线免费观看 | 麻豆视频免费在线播放 | 日韩v在线91成人自拍 | 丰满少妇麻豆av | 精品你懂的 | 日韩色在线观看 | 久久精品中文视频 | 国产成人久久精品77777综合 | 91丝袜美腿| 成人av网址大全 | 欧美激情第八页 | 日日摸日日爽 | 免费看污网站 | 天天操天天摸天天爽 | 久久夜色精品国产欧美乱极品 | 999国产| 久久99视频免费观看 | 热久精品 | 欧美成人中文字幕 | 婷婷亚洲五月 | 中文字幕av在线不卡 | 91在线小视频 | 日韩精选在线 | 免费在线成人av电影 | 麻豆一二 | 欧美日韩另类在线观看 | 国产高清av免费在线观看 | 国产精品色 | 69久久久久久久 | 免费观看完整版无人区 | 久久伦理电影网 | 黄色网大全 | 天天操天天舔天天爽 | 日韩精品一区二区在线 | 亚洲精品国产精品国自产在线 | 91chinesexxx| 国产色在线,com | 区一区二区三在线观看 | 久草免费手机视频 | 在线不卡视频 | 偷拍久久久 | 97视频免费看 | 超碰人人国产 | 国产一区二区在线观看免费 | av在线免费观看黄 | 首页国产精品 | 开心激情网五月天 | 西西444www大胆高清视频 | 在线国产中文字幕 | 久久99精品久久久久久 | 91黄色小视频 | 91中文字幕网 | 国产精品无| 日韩大片在线免费观看 | 国产系列在线观看 | 精品成人免费 | 9ⅰ精品久久久久久久久中文字幕 | 国产精品av免费 | 91免费观看 | 天天做综合网 | 精品国产一区二区三区久久影院 | 亚洲3级 | 亚洲男男gaygay无套 | 欧美日韩不卡在线观看 | 国色天香av | 国产成人精品av在线 | 在线精品视频免费播放 | 精品一区二区三区在线播放 | 中文字幕电影在线 | 亚洲精品玖玖玖av在线看 | 色综合天天综合网国产成人网 | 成年人黄色在线观看 | 日韩精品免费 | 午夜精品久久久久久久99水蜜桃 | 国产一级视频在线观看 | 日韩a免费 | 一区二区影视 | 亚洲国产精品人久久电影 | 日韩视频一区二区在线观看 | 国产精品成人一区二区 | 天天综合网入口 | 国产免费中文字幕 | 狠狠色综合欧美激情 | 人人干在线观看 | 日韩午夜在线观看 | 国产一卡二卡在线 | 日韩免费观看高清 | 久久久国产精品亚洲一区 | 成人免费视频a | 久久国产精品99久久久久 | 日韩av不卡在线 | 亚洲精品三级 | 98精品国产自产在线观看 | 国产99久久精品一区二区永久免费 | 日韩中文字幕免费在线观看 | 一本一本久久a久久精品综合 | 国产精品久久影院 | 日韩午夜电影网 | 精品久久久久久一区二区里番 | 日韩在线视频免费观看 | 国产在线色 | 婷婷激情久久 | 国产亚洲一级高清 | 国产精品成人品 | 久草免费在线 | 日韩免费看 | 亚洲精品福利视频 | 国产精品亚洲片夜色在线 | 国产另类xxxxhd高清 | 999国产| 国产精品久久久一区二区 | 黄免费在线观看 | 久久精品中文 | 激情动态 | 国产拍揄自揄精品视频麻豆 | 色wwww| 国产美女在线精品免费观看 | 欧美在线视频二区 | 日韩欧美视频一区 | 亚洲激情综合 | 天天操天天摸天天爽 | 人人射人人爽 | 久久精品视频3 | 四虎国产精品成人免费影视 | 一区二区三区国产欧美 | 欧美最猛性xxxxx免费 | 激情综合五月网 | 久久精品亚洲精品国产欧美 | 在线视频一区二区 | 激情综合狠狠 | 国产精品久久久久久久av电影 | 久久久福利 | 亚洲精品美女久久久 | 特级a老妇做爰全过程 | 丁香五月亚洲综合在线 | 在线观看中文字幕网站 | 69精品人人人人 | 日韩在线色 | 亚洲成人免费观看 | 欧美午夜精品久久久久久浪潮 | 色诱亚洲精品久久久久久 | 国产视频精选在线 | 日韩有码在线观看视频 | 久久精品www人人爽人人 | 日韩高清无线码2023 | 免费 在线 中文 日本 | 亚洲人成人天堂h久久 | 亚洲精品午夜aaa久久久 | 国产三级在线播放 | 国产精品久久av | 国产视频999 | 日本资源中文字幕在线 | 精品国产乱码久久久久久1区二区 | 一区二区精 | 97狠狠干| 欧美在线视频一区二区三区 | 国产成人免费高清 | 久久久久久久久久久久久国产精品 | 狠狠操欧美 | 精品国偷自产在线 | 夜夜高潮夜夜爽国产伦精品 | 日韩在线中文字幕 | 中文字幕在线日 | 日韩精品欧美精品 | 天天干天天操天天 | 天天se天天cao天天干 | 在线观看中文 | 激情久久综合网 | 91亚洲国产成人久久精品网站 | 国产精品一区二区在线 | 欧美精品色 | 国产精品高清免费在线观看 | 中文字幕成人一区 | 亚洲2019精品 | 日日干av | 国内三级在线观看 | 午夜黄网 | 99色在线视频 | 日日干夜夜操视频 | 最近日本中文字幕 | 国产精品美女久久久久久久久久久 | 久草视频在线观 | 久久经典国产 | 91av手机在线观看 | 一级黄色片在线免费观看 | 亚洲人成在 | 日韩激情网 | 国产午夜精品久久 | 成人国产精品久久久 | 国产精品国产三级国产不产一地 | 粉嫩av一区二区三区四区 | 精品久久久久久久久久久久久久久久 | 国产精品乱码久久 | 永久免费的啪啪网站免费观看浪潮 | 99精品视频免费观看 | 亚洲传媒在线 | 激情欧美xxxx | 久久人人爽人人爽 | 99人久久精品视频最新地址 | 久久成人国产精品一区二区 | 天天操天天吃 | 五月婷婷视频在线 | 国产精品免费在线播放 | 国产精品第一页在线 | 伊人五月在线 | 91精品久久久久久综合五月天 | 天天玩天天干天天操 | 久草视频播放 | 国产高清视频在线免费观看 | 国产视频精品网 | 婷婷丁香六月天 | 国产色就色 | 国产高清视频免费观看 | 中文字幕有码在线播放 | 日韩在线视频免费观看 | 又黄又网站 | 中文字幕免费高清在线 | 超碰av在线播放 | 黄色一级免费网站 | 日韩特黄一级欧美毛片特黄 | 99在线精品视频观看 | 国产日韩欧美视频 | 国产正在播放 | 久久99最新地址 | 99久久这里有精品 | 99热精品免费观看 | 欧美激情精品久久 | 一区中文字幕在线观看 | 成人黄性视频 | 欧美精品一区二区免费 | 国产精品久久久久久久久久99 | 久久精品视频免费观看 | 丁香婷婷久久久综合精品国产 | 色婷婷综合久久久久 | 91亚洲精品乱码久久久久久蜜桃 | 在线看小早川怜子av | 在线观看岛国 | 91精品综合在线观看 | 亚洲精品视频在线播放 | 久久久久免费视频 | 国产中的精品av小宝探花 | 麻豆果冻剧传媒在线播放 | 日韩欧美有码在线 | 中文字幕av在线免费 | 91在线播放视频 | 91爱看片 | 国产一区二区成人 | 在线观看av大片 | 国产我不卡 | 中文字幕 成人 | 缴情综合网五月天 | 国产午夜精品久久 | 中文字幕综合在线 | 在线国产一区二区三区 | 亚洲欧美视频在线观看 | 女人18精品一区二区三区 | 激情偷乱人伦小说视频在线观看 | 国产精品破处视频 | 欧美精品乱码久久久久久 | 日本中文字幕久久 | 久久综合九色欧美综合狠狠 | 日韩成人精品一区二区 | 毛片基地黄久久久久久天堂 | 欧美日韩精品在线视频 | 9999国产精品| 日日夜夜草 | 玖玖爱国产在线 | 午夜精品av在线 | 国内一区二区视频 | 激情av在线资源 | 久久久精品国产一区二区电影四季 | 2020天天干天天操 | 久久久18 | 欧美爽爽爽 | 黄网站www| 精品毛片一区二区免费看 | 天天操比 | 欧美精品xxx | av丝袜在线 | av电影中文字幕在线观看 | 最新高清无码专区 | 日韩精品视频在线观看网址 | 欧美另类xxxx | 久色免费视频 | 日韩精品一区二区在线观看 | 国产精品日韩高清 | 日批在线看| 最近中文字幕国语免费高清6 | 深爱婷婷久久综合 | 国产色a在线观看 | 精品国产免费观看 | 亚洲精品男女 | 精品一区91 | 亚洲精品高清视频 | 久久99国产精品视频 | 美女网站视频久久 | 最新国产在线观看 | 亚洲欧美综合精品久久成人 | 99久久精品免费视频 | 黄色一级动作片 | 国产成人香蕉 | 国外调教视频网站 | 在线观看第一页 | 久久久久久久免费观看 | 97成人在线观看视频 | 成人av高清在线观看 | 97视频亚洲 | 欧美精品视 | 国产黄色大片免费看 | 国产精品久久网站 | 国产精品毛片久久久久久久 | 天天在线免费视频 | www.啪啪.com| 久久伊人五月天 | 久久国产视频网站 | 69国产盗摄一区二区三区五区 | www.黄色在线 | 久久免费视频在线观看6 | 日本免费一二三区 | 天天搞天天 | 国产一级大片在线观看 | 久久久久久麻豆 | 91成人精品观看 | 日韩草比| 日韩欧美国产免费播放 | 国产福利av在线 | 国产精品久久久久久久av电影 | 中文字幕成人一区 | 久久夜视频 | 日韩欧美在线高清 | 日韩久久精品一区二区 | 国产一区在线视频观看 | 超碰人人在线观看 | 亚洲专区路线二 | 91精品国产欧美一区二区成人 | 国产精品久久久久久久久蜜臀 | 在线激情影院一区 | 色综合五月天 | 亚洲精品激情 | 一级淫片a| 久久影院午夜论 | 欧美日韩亚洲精品在线 | 欧美激情视频一区二区三区免费 | av免费网站观看 | 国产精品婷婷午夜在线观看 | 亚洲午夜精品福利 | 日韩欧美一区二区三区视频 | 最新真实国产在线视频 | 日韩成年视频 | 999视频在线观看 | 天天插天天干天天操 | 欧美日韩在线视频一区 | 国产成人精品一区一区一区 | 黄色一二级片 | 久久精品久久久久久久 | 综合影视 | 激情av在线播放 | 欧美老人xxxx18| 成人动漫精品一区二区 | 在线韩国电影免费观影完整版 | 亚洲午夜精品久久久久久久久久久久 | 黄色av一区二区 | 四虎永久国产精品 | 在线观看av麻豆 | 天天色官网 | 久久久免费高清视频 | 一区 二区电影免费在线观看 | av免费看电影 | 在线中文字幕观看 | 久久国产精品99精国产 | 国产99久久久国产 | 欧美精品v国产精品 | 国产又粗又猛又爽又黄的视频先 | 午夜婷婷网 | 亚洲激情影院 | 日韩有码欧美 | 成人免费在线观看电影 | 91大神电影 | 精品一区91 | 免费在线播放视频 | 日韩大片在线免费观看 | 久久人人爽人人爽 | 色综合久久精品 | 99热精品国产一区二区在线观看 | 久久久久久毛片精品免费不卡 | 欧美午夜性生活 | 在线免费高清一区二区三区 | 日韩激情av在线 | 中文字幕在线国产 | av黄色影院 | 深夜免费福利 | 亚洲成 人精品 | 久久国产精品一区二区三区四区 | 国产亚洲视频在线免费观看 | 欧美精品中文在线免费观看 | 亚洲国产偷 | 免费看一级黄色大全 | 超碰在线中文字幕 | 久久国产视屏 | 国产又粗又猛又黄 | 日日骑 | 久久人人精 | 欧美一级片在线 | 国产在线更新 | 欧美韩国日本在线 | 日本高清久久久 | 精品在线视频一区二区三区 | 久久综合操 | 尤物九九久久国产精品的分类 | 国产精品 中文在线 | 五月激情婷婷丁香 | 成人一区二区在线观看 | 免费的国产精品 | 97av色| 五月婷婷影视 | 又黄又色又爽 | 日韩69av | 国产伦理精品一区二区 | 国产专区视频在线观看 | 顶级bbw搡bbbb搡bbbb | 五月天国产精品 | 久草99| 亚洲精品系列 | 一区二区三区四区精品 | 一区二区视频在线播放 | 日韩午夜av | 国产精品岛国久久久久久久久红粉 | 欧美福利在线播放 | 精品国产一二三四区 | 午夜黄网| 黄色小说在线免费观看 | 亚洲精品国产精品乱码在线观看 | 国产一级黄色免费看 | 五月婷色| 欧美日韩免费在线观看视频 | 亚洲精品午夜久久久久久久久久久 | 欧美一区免费观看 | 青青啪| 欧美日韩国产在线精品 | 亚洲天堂va | 午夜在线免费观看视频 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 人人爽人人干 | www.狠狠色.com | 香蕉精品在线观看 | 日韩精品在线看 | av一区二区在线观看中文字幕 | 日韩欧美高清免费 | 美女网站视频免费都是黄 | 免费看黄色小说的网站 | 亚洲理论片在线观看 | 不卡的av片| 久久手机视频 | 欧美综合国产 | 亚洲免费a | 精品亚洲国产视频 | 美女视频永久黄网站免费观看国产 | 国产中文 | 欧美老少交 | 综合久久久久 | 天天色棕合合合合合合 | 国产成人综合精品 | 日韩欧美视频在线观看免费 | 国产在线视频在线观看 | 国产精品久久久久久电影 | 欧美成人在线网站 | 丁香五月缴情综合网 | 亚洲h视频在线 | 亚洲精品av中文字幕在线在线 | 五月婷网站 | 中文字幕色在线视频 | 免费看十八岁美女 | 成人资源网 | 久久系列 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 亚洲成人av片在线观看 | 成人在线免费观看网站 | 国产精品入口久久 | 日韩中文在线电影 | 精品欧美一区二区三区久久久 | 玖玖国产精品视频 | 国产美女黄网站免费 | 国产成人三级一区二区在线观看一 | 91av九色| 91av观看 | 九九热免费视频在线观看 | 国产精品一区二区在线免费观看 | 国产黄色片久久久 | 91高清免费观看 | 久久免费看片 | 十八岁免进欧美 | 亚洲国内精品在线 | 在线观看一级片 | 五月在线 | 国产精品久久久久久久久婷婷 | 国产无遮挡又黄又爽在线观看 | 超碰在线人人97 | 日韩午夜在线播放 | 伊人资源站| 国产精品资源在线观看 | 久久久久亚洲精品国产 | 91成人精品一区在线播放69 | 国产a精品| 在线观看黄色国产 | av一本久道久久波多野结衣 | 久久私人影院 | 一区 二区电影免费在线观看 | 午夜精品导航 | 中文字幕有码在线播放 | 亚洲精品自拍 | 色婷婷丁香 | 91看片在线播放 | 欧美在线观看视频一区二区 | 久草| 日本中文字幕在线免费观看 | 91亚洲精品国偷拍 | 午夜久久福利影院 | 香蕉久草在线 | 久久久久色 | 久草在线一免费新视频 | 成人cosplay福利网站 | 成人小视频在线观看免费 | 91在线精品秘密一区二区 | 国产高清免费在线观看 | 深夜免费福利视频 | 国产高清视频免费最新在线 | 中国黄色一级大片 | 欧美三级高清 | 亚洲成人av一区 | 亚洲三级av | 亚洲国产日韩欧美在线 | 在线观看日韩视频 | 欧美精品一区在线 | 国产精品久久久区三区天天噜 | 免费观看mv大片高清 | 丁香六月中文字幕 | 国产美女视频一区 | 狠狠狠干| 日本三级人妇 | 国产精品12 | www.亚洲视频 | 在线视频电影 | 国产精品一区久久久久 | 天天操天天添天天吹 | 午夜视频亚洲 | 久久av伊人 | 人人爽人人爽人人爽人人爽 | 日本久久综合视频 | 国产精选在线观看 | 中文字幕在线影院 | 免费观看视频黄 | 欧美看片| 五月婷婷激情六月 | 日本一区二区三区免费观看 | 日韩视频免费观看高清完整版在线 | 欧美ⅹxxxxxx | 91最新中文字幕 | 18国产精品白浆在线观看免费 | 久久久久久久久福利 | 免费高清av在线看 | 中文字幕亚洲综合久久五月天色无吗'' | 婷婷激情综合五月天 | 婷婷丁香狠狠爱 | 91视频电影 | 天天综合狠狠精品 | 一区二区不卡 | 国产精品久久久久婷婷 | 黄色小网站免费看 | 黄色网址中文字幕 | 91精品国产电影 | 99视频免费看 | 九9热这里真品2 | 欧美日韩一级久久久久久免费看 | 中文字幕一区二区三区四区在线视频 | 中文字幕在线观看2018 | 久久伦理电影 | 国产日韩视频在线观看 | 91成品人影院| 久久极品 | 国产黄色免费 | 国产高清久久久久 | 久久毛片网站 | 欧美日韩激情视频8区 | 国产精品久久久久久吹潮天美传媒 | 久草久| 亚洲欧美日韩精品久久久 | 国产精品成人免费精品自在线观看 | 久久综合狠狠综合久久狠狠色综合 | 亚洲精品xxx | 狠狠色丁香 | 天天插天天狠天天透 | 久久久精品网 | 韩国中文三级 | 午夜精品中文字幕 | 深夜福利视频一区二区 | 久久久黄视频 | 亚洲免费成人av电影 | av中文在线影视 | 国产亚洲精品久 | 亚洲综合欧美日韩狠狠色 | 在线91av| 久久精品成人欧美大片古装 | 亚洲国产免费 | 久久久久亚洲精品男人的天堂 | 国产一区在线免费 | 精品久久久久久久久久久久久久久久 | 国产精品mv | 四虎最新入口 | 人人舔人人爽 | 欧美日韩性 | 国产精品免费人成网站 | 黄色网址中文字幕 | 99视频精品在线 | www.色爱 | 久国产在线播放 | 在线观看免费91 | 91九色视频国产 | 97在线影视 | 免费观看一级特黄欧美大片 | 午夜狠狠干 | 色就是色综合 | 欧美激情视频一区二区三区免费 | 成人午夜片av在线看 | 亚洲精品视频一二三 | 韩国一区二区三区在线观看 | 国产拍揄自揄精品视频麻豆 | 91精品国产乱码久久桃 | 国产精品18久久久久久久 | 美腿丝袜一区二区三区 | 久久综合九色综合久久久精品综合 | www.久久久com| 91九色视频国产 | 亚洲成人av一区二区 | 国产精品日韩欧美 | 久久成人精品电影 | www看片网站 | 亚洲精品videossex少妇 | 国产精品日韩在线 | 亚洲最大成人网4388xx | 色综合国产 | 日韩a在线 | 欧美aaa大片 | 久久观看 | 中文字幕在线观看1 | 日韩在线观看视频一区二区三区 | av在线直接看 | 亚洲在线视频观看 | 国产区精品 | 久久综合给合久久狠狠色 | 狠狠色伊人亚洲综合网站野外 | 久久夜色精品国产欧美乱极品 | 欧美福利片在线观看 | 久久久久久高潮国产精品视 | 在线黄色免费 | 欧美天堂久久 | 成片视频免费观看 | 欧美精品免费在线 | 成人在线播放免费观看 | 欧美成人va | 日韩免费三区 | 日本在线视频网址 | 91在线视频播放 | 国产精品99久久免费观看 | 久久精品国产免费看久久精品 | 国产特级毛片aaaaaaa高清 | 日韩精品一区二区在线观看视频 | 久久99国产精品二区护士 | 免费在线精品视频 | 色激情五月 | 综合五月| 亚洲 欧美 综合 在线 精品 | 超碰免费公开 | 久久日本视频 | 伊人中文网 | 精品免费观看视频 | 日韩激情久久 | 日韩免费在线观看网站 | 国产精品一区二区三区四区在线观看 | 色综合久久88 | 久久伊人免费视频 | 欧美在线一级片 | 亚洲www天堂com| 亚洲精品黄色 | 福利电影久久 | 精品伊人久久久 | 97碰碰视频 | 免费在线黄 | 午夜体验区 | 国产精品美女在线 | 人人澡超碰碰97碰碰碰软件 | 成人污视频在线观看 | 日韩免费一区二区三区 | 国产欧美久久久精品影院 | 插婷婷| 亚洲最大av | 麻豆国产网站 | 亚洲色图激情文学 | zzijzzij亚洲日本少妇熟睡 | 人人射 | www免费在线观看 | 91在线观看视频 | 911国产| 国产精品免费麻豆入口 | 91亚洲激情 | 国产精品精品视频 | 最新亚洲视频 | 欧美国产一区在线 | 国产亚洲精品美女 | 91在线视频在线观看 | 精品国产成人av | 国产分类视频 | 国产免费国产 | 日韩精品高清不卡 | 日韩激情第一页 | 992tv在线成人免费观看 | 婷婷免费在线视频 | 日韩欧美高清免费 | av中文字幕在线观看网站 | 日韩欧美有码在线 | 国产高清视频在线播放 | 国产又粗又长又硬免费视频 | 午夜精品电影 | 亚洲国产午夜精品 | 最近av在线 | 久久综合狠狠综合 | 人人爽爽人人 | 久久久久伊人 | 夜夜看av |