Docker容器上傳/下載特性的控制方法及裝置的制造方法
【專利摘要】本發(fā)明公開了一種Docker容器上傳/下載特性的控制方法及裝置。其中方法包括:啟動Docker容器的創(chuàng)建;為所述Docker容器創(chuàng)建虛擬網(wǎng)卡對,所述虛擬網(wǎng)卡對組成連接所述Docker容器和宿主機(jī)的數(shù)據(jù)通道;其中,在上述創(chuàng)建虛擬網(wǎng)卡對的過程中,在所述Docker容器的命名空間內(nèi)設(shè)置所述Docker容器的上傳特性參數(shù),在所述宿主機(jī)的命名空間內(nèi)設(shè)置所述Docker容器的下載特性參數(shù)。通過設(shè)定上傳和下載兩個方向的特性參數(shù),使得Docker容器運(yùn)行過程中,將嚴(yán)格按照這些特性參數(shù)進(jìn)行上傳數(shù)據(jù)和下載數(shù)據(jù),從而使得Docker容器的網(wǎng)絡(luò)流量得到了有效的控制,而且是在雙向上都得到了有效控制。
【專利說明】
Docker容器上傳/下載特性的控制方法及裝置
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及計算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體涉及一種Docker容器上傳/下載特性的控制方法及裝置。
【背景技術(shù)】
[0002]Docker是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的Linux機(jī)器上,也可以實現(xiàn)虛擬化。Docker容器是完全使用沙箱機(jī)制,相互之間不會有任何接口。幾乎沒有性能開銷,可以很容易地在機(jī)器和數(shù)據(jù)中心中運(yùn)行。最重要的是,他們不依賴于任何語言、框架包括系統(tǒng)。Docker可以對實現(xiàn)很多資源隔離,如CPU、核綁定、優(yōu)先級、內(nèi)存等等,但對網(wǎng)絡(luò)流量(尤其雙向)并無太好的限制方法。
[0003]現(xiàn)有技術(shù)中提供了一種限制Docker容器網(wǎng)絡(luò)流量的方法,其使用流量控制工具在宿主機(jī)上對Docker容器的虛擬網(wǎng)卡進(jìn)行限制,但是該方法只能對所有Docker容器的網(wǎng)絡(luò)流量進(jìn)行單向控制。而且目前沒有可靠方法可獲得Docker容器與虛擬網(wǎng)卡的對應(yīng)關(guān)系,因此,沒有一種有效的技術(shù)手段對單一 Docker容器的上傳/下載雙向的特性參數(shù)進(jìn)行控制。
【發(fā)明內(nèi)容】
[0004]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的Docker容器上傳/下載特性的控制方法及裝置。
[0005]根據(jù)本發(fā)明的一個方面,提供了一種Docker容器上傳/下載特性的控制方法,其包括:
[0006]啟動Docker容器的創(chuàng)建;
[0007]為所述Docker容器創(chuàng)建虛擬網(wǎng)卡對,所述虛擬網(wǎng)卡對組成連接所述Docker容器和宿主機(jī)的數(shù)據(jù)通道;
[0008]其中,在上述創(chuàng)建虛擬網(wǎng)卡對的過程中,在所述Docker容器的命名空間內(nèi)設(shè)置所述Docker容器的上傳特性參數(shù),在所述宿主機(jī)的命名空間內(nèi)設(shè)置所述Docker容器的下載特性參數(shù)。
[0009]根據(jù)本發(fā)明的另一方面,提供了一種Docker容器上傳/下載特性的控制裝置,其包括:
[0010]啟動模塊,適于啟動Docker容器的創(chuàng)建;
[0011 ]網(wǎng)卡創(chuàng)建模塊,適于為所述Docker容器創(chuàng)建虛擬網(wǎng)卡對,所述虛擬網(wǎng)卡對組成連接所述Docker容器和宿主機(jī)的數(shù)據(jù)通道;
[0012]第一設(shè)置模塊,適于在上述創(chuàng)建虛擬網(wǎng)卡對的過程中,在所述Docker容器的命名空間內(nèi)設(shè)置所述Docker容器的上傳特性參數(shù);
[0013]第二設(shè)置模塊,適于在上述創(chuàng)建虛擬網(wǎng)卡對的過程中,在所述宿主機(jī)的命名空間內(nèi)設(shè)置所述Docker容器的下載特性參數(shù)。[OOM]根據(jù)本發(fā)明提供的Docker容器上傳/下載特定的控制方法,在啟動創(chuàng)建Docker容器之后,創(chuàng)建虛擬網(wǎng)卡對的過程中,在Docker容器的命名空間內(nèi)設(shè)置Docker容器的上傳特性參數(shù),在宿主機(jī)的命名空間內(nèi)設(shè)置Docker容器的下載特性參數(shù)。通過設(shè)定上傳和下載兩個方向的特性參數(shù),使得Docker容器運(yùn)行過程中,將嚴(yán)格按照這些特性參數(shù)進(jìn)行上傳數(shù)據(jù)和下載數(shù)據(jù),從而使得Docker容器的網(wǎng)絡(luò)流量得到了有效的控制,而且是在雙向上都得到了有效控制。
[0015]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
【附圖說明】
[0016]通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0017]圖1示出了根據(jù)本發(fā)明一個實施例的Docker容器上傳/下載特性的控制方法的流程不意圖;
[0018]圖2示出了根據(jù)本發(fā)明另一個實施例的Docker容器上傳/下載特性的控制方法的流程示意圖;
[0019]圖3示出了根據(jù)本發(fā)明一個實施例的Docker容器上傳/下載特性的控制裝置的結(jié)構(gòu)框圖。
【具體實施方式】
[0020]下面將參照附圖更詳細(xì)地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0021]圖1示出了根據(jù)本發(fā)明一個實施例的Docker容器上傳/下載特性的控制方法的流程示意圖。如圖1所示,該方法包括如下步驟:
[0022]步驟SlOl,啟動Docker容器的創(chuàng)建。
[0023]在啟動Docker容器的創(chuàng)建之前,首先啟動Docker宿主機(jī),在宿主機(jī)上創(chuàng)建一個名為dockerO的虛擬網(wǎng)橋,它在內(nèi)核層連通了其他的物理或虛擬網(wǎng)卡,使得后續(xù)啟動的Docker容器會連接到該虛擬網(wǎng)橋上,進(jìn)而將所有Docker容器和本地宿主機(jī)都放到同一個物理網(wǎng)絡(luò)中。虛擬網(wǎng)橋的工作方式和物理交換機(jī)類似,可使宿主機(jī)上的所有容器就通過交換機(jī)連在了一個二層網(wǎng)絡(luò)中。通常,Docker默認(rèn)指定了 dockerO接口的IP地址和子網(wǎng)掩碼,讓宿主機(jī)和Docker容器之間可以通過虛擬網(wǎng)橋相互通信,流向Docker相關(guān)的網(wǎng)絡(luò)流量都會經(jīng)過DockerO docker會從RFC1918所定義的私有IP網(wǎng)段中,選擇一個和宿主機(jī)不同的IP地址和子網(wǎng)掩碼分配給dockerO。例如,一般Docker會使用172.17.0.0/16這個網(wǎng)段,并將172.17.42.1/16分配給dockerO網(wǎng)橋(在主機(jī)上使用ifconfig命令是可以看到dockerO的,可以認(rèn)為它是網(wǎng)橋的管理接口,在宿主機(jī)上作為一塊虛擬網(wǎng)卡使用)。在虛擬網(wǎng)橋創(chuàng)建完成之后,就可以啟動Docker容器的創(chuàng)建。
[0024]步驟S102,為Docker容器創(chuàng)建虛擬網(wǎng)卡對,該虛擬網(wǎng)卡對組成連接Docker容器和宿主機(jī)的數(shù)據(jù)通道。其中,在創(chuàng)建虛擬網(wǎng)卡對的過程中,在Docker容器的命名空間內(nèi)設(shè)置Docker容器的上傳特性參數(shù),在宿主機(jī)的命名空間內(nèi)設(shè)置Docker容器的下載特性參數(shù)。
[0025]步驟S102是Docker容器的創(chuàng)建過程中的子過程。一般來說,每個Docker容器都是從鏡像建立的,首先拉取ubuntu(—個以桌面應(yīng)用為主的Linux操作系統(tǒng))鏡像,Docker檢查ubuntu鏡像是否存在,如果在本地沒有該鏡像,Docker會從Docker Hub下載。如果鏡像已經(jīng)存在,Docker會使用它來創(chuàng)建新的容器。然后,分配文件系統(tǒng)并且掛載一個可讀寫的層,Docker容器會在這個文件系統(tǒng)中創(chuàng)建,并且一個可讀寫的層被添加到鏡像中。接著,為Docker容器創(chuàng)建虛擬網(wǎng)卡對,該虛擬網(wǎng)卡對組成連接Docker容器和宿主機(jī)的數(shù)據(jù)通道,在Docker選擇的上述網(wǎng)段中選擇一個未占用的IP地址供Docker容器使用。接著,運(yùn)行指定的程序。最后,捕獲并且提供應(yīng)用輸出。
[0026]其中創(chuàng)建虛擬網(wǎng)卡對具體為:在宿主機(jī)上創(chuàng)建一對虛擬網(wǎng)卡veth pair設(shè)備,它們組成一個數(shù)據(jù)的通道,數(shù)據(jù)從一個設(shè)備進(jìn)入,從另一個設(shè)備出來。Docked^veth pair設(shè)備的一端放在新創(chuàng)建的Docker容器中,并命名為ethO。另一端放在宿主機(jī)中,并將這個網(wǎng)絡(luò)設(shè)備加入到dockerO虛擬網(wǎng)橋中。從dockerO子網(wǎng)中分配一個IP給Docker容器使用,并設(shè)置dockerO的IP地址為容器的默認(rèn)網(wǎng)關(guān)。
[0027]本發(fā)明實施例為了能實現(xiàn)對Docker容器的上傳/下載雙向的特性參數(shù)的有效控制,在創(chuàng)建虛擬網(wǎng)卡對的過程中,在Docker容器的命名空間內(nèi)設(shè)置Docker容器的上傳特性參數(shù),在宿主機(jī)的命名空間內(nèi)設(shè)置Docker容器的下載特性參數(shù)。
[0028]Docker容器里所執(zhí)行的進(jìn)程與宿主機(jī)操作系統(tǒng)上運(yùn)行的進(jìn)程或者運(yùn)行在其它Docker容器里的進(jìn)程是相互獨立的。不過,所有的進(jìn)程都是運(yùn)行在相同的內(nèi)核里。Docker來給每個容器提供獨立的命名空間,當(dāng)創(chuàng)建一個Docker容器時,為該容器同時創(chuàng)建了一個命名空間集合。這樣提供了一個隔離層,每一個應(yīng)用在它們自己的命名空間中運(yùn)行而且不會訪問到命名空間之外。Docker容器的命名空間集合包含:
[0029]PID命名空間:使用在進(jìn)程隔離(PID:Process ID);
[0030]NET命名空間:使用在管理網(wǎng)絡(luò)接口(NET = Networking);
[0031 ] IPC命名空間:使用在管理進(jìn)程間通信資源(IPC:1nterProcess Communicat1n);
[0032]MNT命名空間:使用在管理掛載點(MNT = Mount);
[0033]UTS命名空間:使用在隔離內(nèi)核和版本標(biāo)識(UTS:Unix Timesharing System)。
[0034]本發(fā)明實施例在Docker容器創(chuàng)建的過程中,向Docker容器的命名空間內(nèi)設(shè)定參數(shù),一旦Docker容器創(chuàng)建完成,Docker容器就按照命名空間內(nèi)設(shè)定的參數(shù)運(yùn)行程序,不能再更改這些參數(shù)。具體地,本發(fā)明實施例在Docker容器的命名空間內(nèi)設(shè)置Docker容器的上傳特性參數(shù),在宿主機(jī)的命名空間內(nèi)設(shè)置Docker容器的下載特性參數(shù)。例如,在上述IPC命名空間內(nèi)進(jìn)行設(shè)定。其中所設(shè)定的上傳特性參數(shù)包括但不僅限于上傳速度;所設(shè)定的下載特性參數(shù)包括但不僅限于下載速度。通過設(shè)定上傳速度和下載速度,在Docker容器運(yùn)行過程中,將嚴(yán)格按照這些參數(shù)進(jìn)行上傳數(shù)據(jù)和下載數(shù)據(jù),這樣使得Docker容器的網(wǎng)絡(luò)流量得到了有效的控制,而且是在雙向上都得到了有效控制。
[0035]根據(jù)本發(fā)明實施例提供的Docker容器上傳/下載特定的控制方法,在啟動創(chuàng)建Docker容器之后,創(chuàng)建虛擬網(wǎng)卡對的過程中,在Docker容器的命名空間內(nèi)設(shè)置Docker容器的上傳特性參數(shù),在宿主機(jī)的命名空間內(nèi)設(shè)置Docker容器的下載特性參數(shù)。通過設(shè)定上傳和下載兩個方向的特性參數(shù),使得Docker容器運(yùn)行過程中,將嚴(yán)格按照這些特性參數(shù)進(jìn)行上傳數(shù)據(jù)和下載數(shù)據(jù),從而使得Docker容器的網(wǎng)絡(luò)流量得到了有效的控制,而且是在雙向上都得到了有效控制。
[0036]圖2示出了根據(jù)本發(fā)明另一個實施例的Docker容器上傳/下載特性的控制方法的流程示意圖。如圖2所示,該方法包括如下步驟:
[0037]步驟S201,啟動Docker容器的創(chuàng)建。
[0038]在啟動Docker容器的創(chuàng)建之前,首先啟動Docker宿主機(jī),在宿主機(jī)上創(chuàng)建一個名為dockerO的虛擬網(wǎng)橋,它在內(nèi)核層連通了其他的物理或虛擬網(wǎng)卡,使得后續(xù)啟動的Docker容器會連接到該虛擬網(wǎng)橋上,進(jìn)而將所有Docker容器和本地宿主機(jī)都放到同一個物理網(wǎng)絡(luò)中。虛擬網(wǎng)橋的工作方式和物理交換機(jī)類似,可使宿主機(jī)上的所有容器就通過交換機(jī)連在了一個二層網(wǎng)絡(luò)中。通常,Docker默認(rèn)指定了 dockerO接口的IP地址和子網(wǎng)掩碼,讓宿主機(jī)和Docker容器之間可以通過虛擬網(wǎng)橋相互通信,流向Docker相關(guān)的網(wǎng)絡(luò)流量都會經(jīng)過DockerO0
[0039]由于本發(fā)明旨在在Docker容器的創(chuàng)建過程中,對現(xiàn)有技術(shù)提出改進(jìn),虛擬網(wǎng)橋的創(chuàng)建為前期準(zhǔn)備工作,可參考現(xiàn)有技術(shù)的做法,對此不再詳細(xì)描述。
[0040]步驟S202,啟動為Docker容器創(chuàng)建虛擬網(wǎng)卡對。
[0041 ] 為Docker容器創(chuàng)建虛擬網(wǎng)卡對,虛擬網(wǎng)卡對中一個虛擬網(wǎng)卡置入Docker容器中,另一個虛擬網(wǎng)卡置入虛擬網(wǎng)橋中,使得Docker容器和宿主機(jī)通過虛擬網(wǎng)卡對進(jìn)行上傳/下載通信。具體過程為:在宿主機(jī)上創(chuàng)建一對虛擬網(wǎng)卡veth pair設(shè)備,它們組成一個數(shù)據(jù)的通道,數(shù)據(jù)從一個設(shè)備進(jìn)入,從另一個設(shè)備出來。Docker將veth pair設(shè)備的一端放在新創(chuàng)建的Docker容器中,并命名為ethO。另一端放在宿主機(jī)中,并將這個網(wǎng)絡(luò)設(shè)備加入到dockerO虛擬網(wǎng)橋中。從dockerO子網(wǎng)中分配一個IP給Docker容器使用,并設(shè)置dockerO的IP地址為容器的默認(rèn)網(wǎng)關(guān)。
[0042]步驟S202是Docker容器的創(chuàng)建過程中的子過程。
[0043]其中,在創(chuàng)建虛擬網(wǎng)卡對的過程中,分別執(zhí)行如下步驟S203-步驟S205,以及步驟S206-步驟 S208。
[0044]步驟S203,獲取設(shè)定的上傳最高速度和上傳平均速度;
[0045]步驟S204,利用流量控制算法,根據(jù)所設(shè)定的上傳最高速度和上傳平均速度計算所述上傳特性參數(shù)的值;
[0046]步驟S205,依據(jù)上述計算結(jié)果在Docker容器的命名空間內(nèi)設(shè)置所述Docker容器的上傳特性參數(shù)。
[0047]本實施例與上述實施例的不同之處在于,本實施例不直接設(shè)置上傳速度,而是設(shè)定上傳最高速度和上傳平均速度,然后利用流量控制算法,根據(jù)所設(shè)定的上傳最高速度和上傳平均速度計算所述上傳特性參數(shù)的值,依據(jù)計算結(jié)果在Docker容器的命名空間內(nèi)設(shè)置Docker容器的上傳特性參數(shù),具體設(shè)置上傳速度。
[0048]步驟S206,獲取設(shè)定的下載最高速度和下載平均速度;
[0049]步驟S207,利用流量控制算法,根據(jù)所設(shè)定的下載最高速度和下載平均速度計算所述下載特性參數(shù)的值;
[0050]步驟S208,依據(jù)上述計算結(jié)果在宿主機(jī)的命名空間內(nèi)設(shè)置所述Docker容器的下載特性參數(shù)。
[0051]本實施例與上述實施例的不同之處在于,本實施例不直接設(shè)置下載速度,而是設(shè)定下載最高速度和下載平均速度,然后利用流量控制算法,根據(jù)所設(shè)定的下載最高速度和下載平均速度計算所述下載特性參數(shù)的值,依據(jù)計算結(jié)果在Docker容器的命名空間內(nèi)設(shè)置Docker容器的下載特性參數(shù),具體設(shè)置下載速度。
[0052]本實施例利用流量控制算法,根據(jù)所設(shè)定的上傳/下載最高速度和上傳/下載平均速度計算上傳/下載特性參數(shù)的值,而后依據(jù)計算結(jié)果設(shè)置對應(yīng)的命名空間內(nèi)的上傳/下載特性參數(shù),與上述實施例相比,更具靈活性。
[0053]圖3示出了根據(jù)本發(fā)明一個實施例的Docker容器上傳/下載特性的控制裝置的結(jié)構(gòu)框圖。如圖3所示,該裝置包括:啟動模塊301,網(wǎng)卡創(chuàng)建模塊302,第一設(shè)置模塊303,第二設(shè)置模塊304。
[0054]啟動模塊301,適于啟動Docker容器的創(chuàng)建。
[°°55] Docker容器的創(chuàng)建過程包括:首先拉取ubuntu(—個以桌面應(yīng)用為主的Linux操作系統(tǒng))鏡像,Docker檢查ubuntu鏡像是否存在,如果在本地沒有該鏡像,Docker會從DockerHub下載。如果鏡像已經(jīng)存在,Docker會使用它來創(chuàng)建新的容器。然后,分配文件系統(tǒng)并且掛載一個可讀寫的層,Docker容器會在這個文件系統(tǒng)中創(chuàng)建,并且一個可讀寫的層被添加到鏡像中。接著,為Docker容器創(chuàng)建虛擬網(wǎng)卡對,該虛擬網(wǎng)卡對組成連接Docker容器和宿主機(jī)的數(shù)據(jù)通道,在Docker選擇的上述網(wǎng)段中選擇一個未占用的IP地址供Docker容器使用。接著,運(yùn)行指定的程序。最后,捕獲并且提供應(yīng)用輸出。
[0056]網(wǎng)卡創(chuàng)建模塊302,適于為Docker容器創(chuàng)建虛擬網(wǎng)卡對,虛擬網(wǎng)卡對組成連接Docker容器和宿主機(jī)的數(shù)據(jù)通道。
[0057]網(wǎng)卡創(chuàng)建模塊302進(jìn)一步適于:為Docker容器創(chuàng)建虛擬網(wǎng)卡對,虛擬網(wǎng)卡對中一個虛擬網(wǎng)卡置入Docker容器中,另一個虛擬網(wǎng)卡置入虛擬網(wǎng)橋中,使得Docker容器和宿主機(jī)通過虛擬網(wǎng)卡對進(jìn)行上傳/下載通信。具體過程為:在宿主機(jī)上創(chuàng)建一對虛擬網(wǎng)卡vethpair設(shè)備,它們組成一個數(shù)據(jù)的通道,數(shù)據(jù)從一個設(shè)備進(jìn)入,從另一個設(shè)備出來。Docker將veth pair設(shè)備的一端放在新創(chuàng)建的Docker容器中,并命名為ethO。另一端放在宿主機(jī)中,并將這個網(wǎng)絡(luò)設(shè)備加入到dockerO虛擬網(wǎng)橋中。從dockerO子網(wǎng)中分配一個IP給Docker容器使用,并設(shè)置dockerO的IP地址為容器的默認(rèn)網(wǎng)關(guān)。
[0058]第一設(shè)置模塊303,適于在創(chuàng)建虛擬網(wǎng)卡對的過程中,在Docker容器的命名空間內(nèi)設(shè)置Docker容器的上傳特性參數(shù)。
[0059]第二設(shè)置模塊304,適于在上述創(chuàng)建虛擬網(wǎng)卡對的過程中,在宿主機(jī)的命名空間內(nèi)設(shè)置Docker容器的下載特性參數(shù)。
[0060]進(jìn)一步的,該裝置還包括:虛擬網(wǎng)橋創(chuàng)建模塊305,適于創(chuàng)建宿主機(jī)的虛擬網(wǎng)橋,指定虛擬網(wǎng)橋的IP地址和子網(wǎng)掩碼。虛擬網(wǎng)橋創(chuàng)建模塊305在宿主機(jī)上創(chuàng)建一個名為dockerO的虛擬網(wǎng)橋,它在內(nèi)核層連通了其他的物理或虛擬網(wǎng)卡,使得后續(xù)啟動的Docker容器會連接到該虛擬網(wǎng)橋上,進(jìn)而將所有Docker容器和本地宿主機(jī)都放到同一個物理網(wǎng)絡(luò)中。虛擬網(wǎng)橋的工作方式和物理交換機(jī)類似,可使宿主機(jī)上的所有容器就通過交換機(jī)連在了一個二層網(wǎng)絡(luò)中。通常,Docker默認(rèn)指定了 dockerO接口的IP地址和子網(wǎng)掩碼,讓宿主機(jī)和Docker容器之間可以通過虛擬網(wǎng)橋相互通信,流向Docker相關(guān)的網(wǎng)絡(luò)流量都會經(jīng)過DockerO。Docker會從RFC1918所定義的私有IP網(wǎng)段中,選擇一個和宿主機(jī)不同的IP地址和子網(wǎng)掩碼分配給dockerO。例如,一般Docker會使用172.17.0.0/16這個網(wǎng)段,并將172.17.42.1/16分配給dockerO網(wǎng)橋(在主機(jī)上使用if config命令是可以看到dockerO的,可以認(rèn)為它是網(wǎng)橋的管理接口,在宿主機(jī)上作為一塊虛擬網(wǎng)卡使用)。在虛擬網(wǎng)橋創(chuàng)建完成之后,就可以啟動Docker容器的創(chuàng)建。
[0061 ]第一設(shè)置模塊303進(jìn)一步適于:獲取設(shè)定的上傳最高速度和上傳平均速度;利用流量控制算法,根據(jù)所設(shè)定的上傳最高速度和上傳平均速度計算所述上傳特性參數(shù)的值;依據(jù)上述計算結(jié)果在Docker容器的命名空間內(nèi)設(shè)置所述Docker容器的上傳特性參數(shù)。
[0062]第二設(shè)置模塊304進(jìn)一步適于:獲取設(shè)定的下載最高速度和下載平均速度;利用流量控制算法,根據(jù)所設(shè)定的下載最高速度和下載平均速度計算所述下載特性參數(shù)的值;依據(jù)上述計算結(jié)果在宿主機(jī)的命名空間內(nèi)設(shè)置所述Docker容器的下載特性參數(shù)。
[0063]根據(jù)本發(fā)明實施例提供的Docker容器上傳/下載特定的控制裝置,在啟動創(chuàng)建Docker容器之后,創(chuàng)建虛擬網(wǎng)卡對的過程中,在Docker容器的命名空間內(nèi)設(shè)置Docker容器的上傳特性參數(shù),在宿主機(jī)的命名空間內(nèi)設(shè)置Docker容器的下載特性參數(shù)。通過設(shè)定上傳和下載兩個方向的特性參數(shù),使得Docker容器運(yùn)行過程中,將嚴(yán)格按照這些特性參數(shù)進(jìn)行上傳數(shù)據(jù)和下載數(shù)據(jù),從而使得Docker容器的網(wǎng)絡(luò)流量得到了有效的控制,而且是在雙向上都得到了有效控制。
[0064]在此提供的算法和顯示不與任何特定計算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
[0065]在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細(xì)節(jié)的情況下實踐。在一些實例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
[0066]類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循【具體實施方式】的權(quán)利要求書由此明確地并入該【具體實施方式】,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
[0067]本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
[0068]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實施例的任意之一都可以以任意的組合方式來使用。
[0069]本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運(yùn)行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的Docker容器上傳/下載特定的控制裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機(jī)程序和計算機(jī)程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機(jī)可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
[0070]應(yīng)該注意的是上述實施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機(jī)來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
【主權(quán)項】
1.一種Docker容器上傳/下載特性的控制方法,其包括: 啟動Docker容器的創(chuàng)建; 為所述Docker容器創(chuàng)建虛擬網(wǎng)卡對,所述虛擬網(wǎng)卡對組成連接所述Docker容器和宿主機(jī)的數(shù)據(jù)通道; 其中,在上述創(chuàng)建虛擬網(wǎng)卡對的過程中,在所述Docker容器的命名空間內(nèi)設(shè)置所述Docker容器的上傳特性參數(shù),在所述宿主機(jī)的命名空間內(nèi)設(shè)置所述Docker容器的下載特性參數(shù)。2.根據(jù)權(quán)利要求1所述的Docker容器上傳/下載特性的控制方法,其中,在所述啟動創(chuàng)建Docker容器的創(chuàng)建之前,所述方法還包括:創(chuàng)建宿主機(jī)的虛擬網(wǎng)橋,指定虛擬網(wǎng)橋的IP地址和子網(wǎng)掩碼。3.根據(jù)權(quán)利要求2所述的Docker容器上傳/下載特性的控制方法,其中,所述為所述Docker容器創(chuàng)建虛擬網(wǎng)卡對,所述虛擬網(wǎng)卡對組成連接所述Docker容器和宿主機(jī)的數(shù)據(jù)通道進(jìn)一步包括: 為所述Docker容器創(chuàng)建虛擬網(wǎng)卡對,所述虛擬網(wǎng)卡對中一個虛擬網(wǎng)卡置入所述Docker容器中,另一個虛擬網(wǎng)卡置入所述虛擬網(wǎng)橋中,使得所述Docker容器和所述宿主機(jī)通過所述虛擬網(wǎng)卡對進(jìn)行上傳/下載通信。4.根據(jù)權(quán)利要求1-3任一項所述的Docker容器上傳/下載特性的控制方法,其中,所述在Docker容器的命名空間內(nèi)設(shè)置所述Docker容器的上傳特性參數(shù)進(jìn)一步包括: 獲取設(shè)定的上傳最高速度和上傳平均速度; 利用流量控制算法,根據(jù)所設(shè)定的上傳最高速度和上傳平均速度計算所述上傳特性參數(shù)的值; 依據(jù)上述計算結(jié)果在Docker容器的命名空間內(nèi)設(shè)置所述Docker容器的上傳特性參數(shù)。5.根據(jù)權(quán)利要求1-3任一項所述的Docker容器上傳/下載特性的控制方法,其中,所述在宿主機(jī)的命名空間內(nèi)設(shè)置所述Docker容器的下載特性參數(shù)進(jìn)一步包括: 獲取設(shè)定的下載最高速度和下載平均速度; 利用流量控制算法,根據(jù)所設(shè)定的下載最高速度和下載平均速度計算所述下載特性參數(shù)的值; 依據(jù)上述計算結(jié)果在宿主機(jī)的命名空間內(nèi)設(shè)置所述Docker容器的下載特性參數(shù)。6.一種Docker容器上傳/下載特性的控制裝置,其包括: 啟動模塊,適于啟動Docker容器的創(chuàng)建; 網(wǎng)卡創(chuàng)建模塊,適于為所述Docker容器創(chuàng)建虛擬網(wǎng)卡對,所述虛擬網(wǎng)卡對組成連接所述Docker容器和宿主機(jī)的數(shù)據(jù)通道; 第一設(shè)置模塊,適于在上述創(chuàng)建虛擬網(wǎng)卡對的過程中,在所述Docker容器的命名空間內(nèi)設(shè)置所述Docker容器的上傳特性參數(shù); 第二設(shè)置模塊,適于在上述創(chuàng)建虛擬網(wǎng)卡對的過程中,在所述宿主機(jī)的命名空間內(nèi)設(shè)置所述Docker容器的下載特性參數(shù)。7.根據(jù)權(quán)利要求6所述的Docker容器上傳/下載特性的控制裝置,其中,還包括:虛擬網(wǎng)橋創(chuàng)建模塊,適于創(chuàng)建宿主機(jī)的虛擬網(wǎng)橋,指定虛擬網(wǎng)橋的IP地址和子網(wǎng)掩碼。8.根據(jù)權(quán)利要求7所述的Docker容器上傳/下載特性的控制裝置,其中,所述網(wǎng)卡創(chuàng)建模塊進(jìn)一步適于:為所述Docker容器創(chuàng)建虛擬網(wǎng)卡對,所述虛擬網(wǎng)卡對中一個虛擬網(wǎng)卡置入所述Docker容器中,另一個虛擬網(wǎng)卡置入所述虛擬網(wǎng)橋中,使得所述Docker容器和所述宿主機(jī)通過所述虛擬網(wǎng)卡對進(jìn)行上傳/下載通信。9.根據(jù)權(quán)利要求6-8任一項所述的Docker容器上傳/下載特性的控制裝置,其中,所述第一設(shè)置模塊進(jìn)一步適于:獲取設(shè)定的上傳最高速度和上傳平均速度;利用流量控制算法,根據(jù)所設(shè)定的上傳最高速度和上傳平均速度計算所述上傳特性參數(shù)的值;依據(jù)上述計算結(jié)果在Docker容器的命名空間內(nèi)設(shè)置所述Docker容器的上傳特性參數(shù)。10.根據(jù)權(quán)利要求6-8任一項所述的Docker容器上傳/下載特性的控制裝置,其中,所述第二設(shè)置模塊進(jìn)一步適于:獲取設(shè)定的下載最高速度和下載平均速度;利用流量控制算法,根據(jù)所設(shè)定的下載最高速度和下載平均速度計算所述下載特性參數(shù)的值;依據(jù)上述計算結(jié)果在宿主機(jī)的命名空間內(nèi)設(shè)置所述Docker容器的下載特性參數(shù)。
【文檔編號】H04L29/08GK106060122SQ201610340995
【公開日】2016年10月26日
【申請日】2016年5月20日
【發(fā)明人】元哲偉
【申請人】北京奇虎科技有限公司, 奇智軟件(北京)有限公司