基于Docker的配置管理方式及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù)領(lǐng)域,具體而言,本發(fā)明涉及一種基于Docker的配置管理方式和裝置。
【背景技術(shù)】
[0002]Docker是一個開源的應(yīng)用容器引擎,旨在提供一種應(yīng)用程序的自動化部署解決方案,在Linux系統(tǒng)上迅速創(chuàng)建一個容器container (輕量級虛擬機)并部署和運行應(yīng)用程序,并通過配置文件可以輕松實現(xiàn)應(yīng)用程序的自動化安裝、部署和升級,非常方便。Docker虛擬出多個容器,每個容器之間相互隔離沒有接口,可以將彼此的生產(chǎn)環(huán)境和開發(fā)環(huán)境分開,互不影響,且每個容器擁有自己獨立的各種命名空間namespace,包括:PID進程、MNT文件系統(tǒng)、NET 網(wǎng)絡(luò)、IPC、UTS (UNIX Time-sharing System,UNIX 時間共享系統(tǒng))等。
[0003]現(xiàn)有的原生Docker,對其內(nèi)部虛擬化的容器的配置管理方式不完善,不能通過簡單快捷地方式對多個容器進行配置管理。例如,無法對每個容器的CPU使用率進行針對性限制;網(wǎng)絡(luò)配置中可分配IP地址的網(wǎng)段固定,無法基于用戶的需求為每個容器進行定制化IP地址分配;無法為每個容器配置可用的獨立磁盤空間。
【發(fā)明內(nèi)容】
[0004]為克服上述技術(shù)問題或者至少部分地解決上述技術(shù)問題,特提出以下技術(shù)方案:
[0005]本發(fā)明的實施例提出了一種基于Docker的配置管理方式,應(yīng)用于包括多個容器的Docker運行環(huán)境中,包括:
[0006]獲取Docker運行環(huán)境中的多個容器的配置需求;
[0007]確定與配置需求相應(yīng)的底層系統(tǒng)命令;
[0008]依據(jù)所述配置需求并調(diào)用所述底層系統(tǒng)命令來對Docker運行環(huán)境中的多個容器進行配置管理。
[0009]本發(fā)明的實施例還提出了一種基于Docker的配置管理裝置,應(yīng)用于包括多個容器的Docker運行環(huán)境中,包括:
[0010]需求獲取模塊,用于獲取Docker運行環(huán)境中的多個容器的配置需求;
[0011]命令確定模塊,用于確定與配置需求相應(yīng)的底層系統(tǒng)命令;
[0012]配置管理模塊,用于依據(jù)配置需求并調(diào)用底層系統(tǒng)命令來對Docker運行環(huán)境中的多個容器進行配置管理。
[0013]本發(fā)明的實施例中,通過調(diào)用與配置需求相應(yīng)的底層系統(tǒng)命令,來對Docker運行環(huán)境中的多個容器進行配置管理,解決了原生Docker對其內(nèi)部虛擬化的容器的配置管理方式不完善的問題。通過執(zhí)行底層系統(tǒng)命令,能夠快捷地對多個容器進行配置以滿足實際生成環(huán)境的需求;例如,可對每個容器的CPU使用率進行合理限制,可對容器的網(wǎng)絡(luò)配置中的IP地址進行靈活限定,為每個容器配置分配可用的獨立磁盤空間,從而滿足了管理者對Docker運行環(huán)境中的多個容器的各項實際配置需求。
[0014]本發(fā)明附加的方面和優(yōu)點將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。
【附圖說明】
[0015]本發(fā)明上述的和/或附加的方面和優(yōu)點從下面結(jié)合附圖對實施例的描述中將變得明顯和容易理解,其中:
[0016]圖1為本發(fā)明中基于Docker的配置管理方式一個實施例的流程示意圖;
[0017]圖2為本發(fā)明中基于Docker的配置管理裝置一個實施例的結(jié)構(gòu)示意圖。
【具體實施方式】
[0018]下面詳細描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。
[0019]本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”或“耦接”到另一元件時,它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個或更多個相關(guān)聯(lián)的列出項的全部或任一單元和全部組合。
[0020]本發(fā)明的實施例中,底層系統(tǒng)具體為Linux操作系統(tǒng),Docker運行于Linux操作系統(tǒng)之上。
[0021]圖1為本發(fā)明中基于Docker的配置管理方式一個實施例的流程示意圖。
[0022]本發(fā)明的實施例中,應(yīng)用于包括多個容器的Docker運行環(huán)境中,多個容器是在Docker運行環(huán)境中通過搜索或從特定位置拉取鏡像后,基于鏡像生成的。
[0023]步驟SllO:獲取Docker運行環(huán)境中的多個容器的配置需求;步驟S120:確定與配置需求相應(yīng)的底層系統(tǒng)命令;步驟S130:依據(jù)配置需求并調(diào)用底層系統(tǒng)命令來對Docker運行環(huán)境中的多個容器進行配置管理。
[0024]本發(fā)明的實施例中,通過調(diào)用與配置需求相應(yīng)的底層系統(tǒng)命令,來對Docker運行環(huán)境中的多個容器進行配置管理,解決了原生Docker對其內(nèi)部虛擬化的容器的配置管理方式不完善的問題。通過執(zhí)行底層系統(tǒng)命令,能夠快捷地對多個容器進行配置以滿足實際生成環(huán)境的需求;例如,可對每個容器的CPU使用率進行合理限制,可對容器的網(wǎng)絡(luò)配置中的IP地址進行靈活限定,為每個容器配置分配可用的獨立磁盤空間,從而滿足了管理者對Docker運行環(huán)境中的多個容器的各項實際配置需求。
[0025]步驟SllO:獲取Docker運行環(huán)境中的多個容器的配置需求。
[0026]具體地,接收來自管理員通過人機交互界面輸入的對每個容器的配置需求,或讀取系統(tǒng)預(yù)設(shè)置的對每個容器的配置需求。
[0027]其中,配置需求包括但不限于:每個容器相應(yīng)的CPU使用率限制;每個容器相應(yīng)的內(nèi)存利用率;每個容器相應(yīng)的磁盤利用率;每個容器相應(yīng)的網(wǎng)絡(luò)配置,其中,網(wǎng)絡(luò)配置包括分配容器的IP地址對應(yīng)的網(wǎng)段范圍、配置子網(wǎng)掩碼、配置網(wǎng)關(guān)、配置虛擬網(wǎng)卡等。
[0028]S120:確定與配置需求相應(yīng)的底層系統(tǒng)命令。
[0029]具體地,基于各個容器的CPU使用率限制需求,確定與CPU使用率限制相應(yīng)的底層系統(tǒng)命令;基于各個容器的內(nèi)存利用率限制需求,確定與內(nèi)存利用率相應(yīng)的底層系統(tǒng)命令;基于各個容器的磁盤利用率限制需求,確定與磁盤利用率相應(yīng)的底層系統(tǒng)命令;基于各個容器的網(wǎng)絡(luò)配置需求,確定與網(wǎng)絡(luò)配置相應(yīng)的底層系統(tǒng)命令。
[0030]步驟S130:依據(jù)配置需求并調(diào)用底層系統(tǒng)命令來對Docker運行環(huán)境中的多個容器進行配置管理。
[0031]具體地,在第一種情形下:基于各個容器的CPU使用率限制需求,通過調(diào)用與CPU使用率限制相應(yīng)的底層系統(tǒng)命令,來對Docker運行環(huán)境中的多個容器的CPU使用率限制進行配置管理。
[0032]通過Linux 內(nèi)核中 cgroups 機制來管理 CPU 資源;cgroups (control groups)是Linux內(nèi)核提供的一種可以限制、記錄、隔離進程組(process groups)所使用的物理資源的機制??梢岳胏groups機制中的cpu.cfs_per1d_us和cpu.cfs_quota_us來限制各個容器在單位時間里可以使用的cpu時間。其中,cpu.cfs_per1d_us就是時間周期,默認(rèn)為100000,即百毫秒;cpu.cfs_quota_us就是在這期間內(nèi)可使用的cpu時間,默認(rèn)_1,即無限制。
[0033]本實施例中,與CPU使用率限制相應(yīng)的底層系統(tǒng)命令可為cgroups機制中的cpu.cfs_per1d_us和 cpu.cfs_quota_us。
[0034]例如,在物理計算設(shè)備為單核時,運行在該物理計算設(shè)備上的Docker中創(chuàng)建有兩個容器,則針對一個容器,通過調(diào)用底層Linux的cgroups機制將cpu.cfs_quota_us參數(shù)設(shè)置為50000,是cpu.cfs_per1d_us的默認(rèn)參數(shù)100000的50%,即可設(shè)置該容器CPU使用率為50%。
[0035]又例如,在物理計算設(shè)備為多核情況下,如8核的物理計算設(shè)備,運行在該物理計算設(shè)備上的Docker中創(chuàng)建有四個容器,針對一個容器,設(shè)置cpu.cfs_per1d_us參數(shù)為默認(rèn)值100000時,則cpu.cfs_quota_us參數(shù)設(shè)置為200000,即該容器能利用2倍cpu時間,即可使用8核中的2個。
[0036]在第二種情形下:基于各個容器的內(nèi)存利用率限制需求,通過調(diào)用與內(nèi)存利用率相應(yīng)的底層系統(tǒng)命令,來對Docker運行環(huán)境中的多個容器的內(nèi)存利用率進行配置管理。
[0037]本實施例中,與內(nèi)存利用率相應(yīng)的底層系統(tǒng)命令可為Linux內(nèi)核中cgroups機制的 memory cgroup,具體例如 memory.limit_in_bytes。
[0038]例如,需要對Docker運行環(huán)境中的多個容器分別限定內(nèi)存利用率,通過執(zhí)行cgroups機制的memory cgroup的相關(guān)命令memory.limit_in_bytes,可實現(xiàn)限定每個容器的內(nèi)存利用率。
[0039]在第三種情形下:基于各個容器的磁盤利用率限制需求,通過調(diào)用與磁盤利用率相應(yīng)的底層系統(tǒng)命令,來對Docker運行環(huán)境中