Docker的工具實踐及root概念和Docker容器安全性設(shè)置
1. 使用案例 2. Docker解決的問題 3. Docker未來發(fā)展 4. Docker Hub 服務(wù) 5. 技術(shù)局限 6. Docker環(huán)境安全 7. 容器部署安全
使用案例
Docker是一個命令行工具,它提供了中央“docker”執(zhí)行過程中所需的所有工具。這使得Docker的操作非常簡單。一些例子可以檢查運行中的容器的狀態(tài):
或檢查可用的鏡像及其版本的列表:
另一個例子是顯示一個鏡像的歷史:
上面的命令顯示了命令行界面操作的方便快捷。只需要指定鏡像ID的前幾個字符就可以。可以看到只需要“d95”就能顯示d95238078ab0鏡像的所有歷史。
人們可能會注意到該鏡像非常小。這是因為Docker從父鏡像建立增量鏡像,只存儲每個容器的更改。因此,如果有一個300MB的父鏡像,如果在容器中安裝了50MB的額外應(yīng)用或服務(wù),該容器和生成鏡像可能只有50MB。
可以用Dockerfiles自動化Docker容器的創(chuàng)建過程。Dockerfiles是含有單個容器性能規(guī)范的文件。例如,可以創(chuàng)建一個Dockerfiles來建立一個Ubuntu容器,在新容器內(nèi)運行一些命令、安裝軟件或執(zhí)行其他任務(wù),然后啟動容器。
Docker早期版本中的網(wǎng)絡(luò)基于主機橋接,但是Docker 1.0包含了一種新形式的網(wǎng)絡(luò),允許容器直接連接到主機以太網(wǎng)接口。默認(rèn)情況下,一個容器有一個回路以及一個連接到默認(rèn)內(nèi)部橋接的接口,但是如果需要的話也可以配制成直接訪問。通常,直接訪問比橋接的速度更快。
然而,橋接方法在許多情況下是非常有用的。橋接是通過主機自動創(chuàng)建一個內(nèi)部網(wǎng)絡(luò)適配器并為其分配一個主機本身尚未使用的子網(wǎng)。然后,當(dāng)新的容器連接到這座橋,它們的地址進行自動分配。容器啟動時可以將其連接到主機接口或端口,因此運行Apache的容器可能啟動并連接到主機上的TCP端口8080(或隨機端口)。通過使用腳本和管理控制,可以在任何地方啟動Docker,連接端口并將其傳達(dá)到需要使用該服務(wù)的應(yīng)用或服務(wù)堆棧的其他部分。
在Hyper-V服務(wù)器上Docker主機備份方法
要在Hyper-V服務(wù)器上創(chuàng)建Docker主機,需要下載并且安裝OpenSSH以及Windows版本的Docker Machine。還應(yīng)該將OpenSSH二進制文件添加到Hyper-V服務(wù)器路徑以便Docker Machine可以找到它們。
一旦所需的組件就緒,創(chuàng)建Docker主機如同運行一條命令行一樣輕而易舉。打開命令提示符窗口,定位到包含Docker Machine的文件夾,然后輸入可執(zhí)行文件名稱(Docker-machine_windows-amd64.exe),其后輸入-d開關(guān)、驅(qū)動程序的名稱(在本例中是Hyper-V)以及正在創(chuàng)建的虛擬機(VM)的名稱。
例如,該命令可能如下所示:
Docker-machine_windows-amd64.exe -d hyper-v Docker,當(dāng)運行這個命令的時候,Docker Machine完成幾個不同的任務(wù)。其中一些更重要的任務(wù)(從備份的角度來看)包括:
使用命令行中指定的名稱創(chuàng)建虛擬硬盤(virtual hard disk,VHD);
下載名為Boot2Docker.ISO的DVD映像;
創(chuàng)建虛擬機;
把Boot2Docker.ISO 文件與新創(chuàng)建的VM關(guān)聯(lián),作為虛擬DVD光驅(qū);
把VHD與VM關(guān)聯(lián);
啟動VM;
向VM分配IP地址和端口號。
2. Docker解決的問題
云計算、大數(shù)據(jù),移動技術(shù)的快速發(fā)展,加之企業(yè)業(yè)務(wù)需求的不斷變化,導(dǎo)致企業(yè)架構(gòu)要隨時更改以適合業(yè)務(wù)需求,跟上技術(shù)更新的步伐。毫無疑問,這些重?fù)?dān)都將壓在企業(yè)開發(fā)人員身上;團隊之間如何高效協(xié)調(diào),快速交付產(chǎn)品,快速部署應(yīng)用,以及滿足企業(yè)業(yè)務(wù)需求,是開發(fā)人員亟需解決的問題。Docker技術(shù)恰好可以幫助開發(fā)人員解決這些問題。
為了解決開發(fā)人員和運維人員之間的協(xié)作關(guān)系,加快應(yīng)用交付速度,越來越多的企業(yè)引入了DevOps這一概念。但是,傳統(tǒng)的開發(fā)過程中,開發(fā)、測試、運維是三個獨立運作的團隊,團隊之間溝通不暢,開發(fā)運維之間沖突時有發(fā)生,導(dǎo)致協(xié)作效率低下,產(chǎn)品交付延遲, 影響了企業(yè)的業(yè)務(wù)運行。Docker技術(shù)將應(yīng)用以集裝箱的方式打包交付,使應(yīng)用在不同的團隊中共享,通過鏡像的方式應(yīng)用可以部署于任何環(huán)境中。這樣避免了各團隊之間的協(xié)作問題的出現(xiàn),成為企業(yè)實現(xiàn)DevOps目標(biāo)的重要工具。以容器方式交付的Docker技術(shù)支持不斷地開發(fā)迭代,大大提升了產(chǎn)品開發(fā)和交付速度。
此外,與通過Hypervisor把底層設(shè)備虛擬化的虛擬機不同,Docker直接移植于Linux內(nèi)核之上,通過運行Linux進程將底層設(shè)備虛擬隔離,這樣系統(tǒng)性能的損耗也要比虛擬機低的多,幾乎可以忽略。同時,Docker應(yīng)用容器的啟停非常高效,可以支持大規(guī)模的分布系統(tǒng)的水平擴展,真正給企業(yè)開發(fā)帶來福音。
正如中國惠普云計算集成云技術(shù)首席專家劉艷凱所說的那樣:“任何一項技術(shù)的發(fā)展和它受到的追捧,都是因為它能夠解決困擾人們的問題,”Docker正是這樣的一種技術(shù)。
3. Docker未來發(fā)展
任何一項新技術(shù)的出現(xiàn),都需要一個發(fā)展過程,比如云計算為企業(yè)所接受用了將近五年左右時間,OpenStack技術(shù)也經(jīng)歷了兩、三年才受到人們的認(rèn)可。因此,雖然Docker技術(shù)發(fā)展很快,但技術(shù)還不夠成熟,對存儲的靈活的支持、網(wǎng)絡(luò)的開銷和兼容性方面還存在限制,這是Docker沒有被企業(yè)大范圍使用的一個主要原因。另外一個原因是企業(yè)文化是否與DevOps運動一致,只有企業(yè)支持DevOps,才能更大地發(fā)揮Docker的價值。最后一個原因就是安全性問題,Docker對于Linux這一層的安全的隔離還有待改進,才能進一步得到企業(yè)的認(rèn)可。惠普劉艷凱認(rèn)為,這也是Docker需要在下一步中改進的一方面。
Docker價值的最大體于對企業(yè)DevOps的支持,對原生云應(yīng)用大規(guī)模水平擴展的支持。在惠普Helion云戰(zhàn)略中包括了對DevOps服務(wù)和原生云應(yīng)用的支持,而這一戰(zhàn)略的具體落地,與Docker技術(shù)有著緊密的聯(lián)系。因此,惠普團隊一直積極地參與OpenStack社區(qū)中和Docker項目相關(guān)的開發(fā)活動中,努力改進Docker技術(shù)中存在的不足。同時,惠普產(chǎn)品中也集成了Docker,例如,惠普開發(fā)平臺產(chǎn)品集成了Docker,使用Docker作為應(yīng)用的容器;以及惠普最新發(fā)布的CloudSystem 9.0也增加對Docker的支持,用戶可以像使用其它的虛擬化資源一樣,選擇Docker作為應(yīng)用的承載容器。劉艷凱認(rèn)為,惠普非常認(rèn)可Docker給用戶帶來的一些價值,那也希望通過自己努力,使更多的用戶使用到Docker這樣的先進的技術(shù)。
4. Docker Hub 服務(wù)
雙方在開源容器技術(shù)以及發(fā)展方向上共同努力,并提供本地化的 Docker 服務(wù)。Docker 公司選擇阿里云平臺作為其DockerHub 在中國運營的基礎(chǔ)服務(wù)。阿里云也獲得 DockerEngine 商用版以及DockerDataCenter 運營權(quán),并為 Docker 客戶提供企業(yè)級支持和咨詢服務(wù)。同時,阿里云將成為 Docker 官方支持的云服務(wù)提供商。
阿里云總裁胡曉明表示,通過和 Docker 的戰(zhàn)略合作,阿里云將更好地為企業(yè)級客戶提供完善的云服務(wù),使能客戶,并實現(xiàn)時代轉(zhuǎn)型。
5. 技術(shù)局限
網(wǎng)絡(luò)限制:容器網(wǎng)絡(luò)(Docker Network )可以方便地在同一主機下對容器進行網(wǎng)絡(luò)連接。加上一些其他的工作,就可以跨主機使用疊加網(wǎng)絡(luò)功能。然而,也就到此為止了。網(wǎng)絡(luò)配置操作是受限的,而且到docker 0.7為止可以說這些手段都是人工的。盡管容器腳本化可以規(guī)模化,但是必須給網(wǎng)絡(luò)定義增加預(yù)分配實例,每次提供容器時還需要額外步驟,這容易引起錯誤。
庫控制受限:庫已經(jīng)成為任何容器會話的中心議題。公共庫是最有價值的,因為他貢獻(xiàn)了大量的預(yù)置容器,節(jié)省了許多的配置時間。然而,在沙盒里使用它是有風(fēng)險的。在不知道誰以及如何創(chuàng)建鏡像的情況下,可能會存在任意數(shù)量的有意或無意的穩(wěn)定性和安全性風(fēng)險。對于企業(yè)來說,有必要建立和維護一個私有庫,這個庫的建立挑戰(zhàn)不大,但管理是個問題。Docker為大型庫的鏡像管理提供了一個有限的元數(shù)據(jù)模型,確保未來實例如預(yù)期的能力受限,也沒有疊加功能。
沒有清晰的審計跟蹤:提供容器是很簡單的,但知道提供容器的時間、原因、方式以及提供方卻不容易。因此,在提供之后,用戶并不掌握多少出于審計目的的歷史。
運行實例的低可見性:如果沒有經(jīng)過深思熟慮的行動,實例提供后很難接觸到運行容器的對象,也很難知道哪些應(yīng)該出那里,哪些不應(yīng)該出那里。
6. Docker環(huán)境安全
Docker的勢頭在過去的12個月里十分火熱,很多人表示很少見如此能夠吸引行業(yè)興趣的新興技術(shù)。然而,當(dāng)興奮轉(zhuǎn)化為實際部署時,企業(yè)需要注意Docker的安全性。
了解Docker的人都知道,Docker利用容器將資源進行有效隔離。因此容器相當(dāng)于與Linux OS和hypervisor有著幾乎相同的安全運行管理和配置管理級別。但當(dāng)Docker涉及到安全運營與管理,以及具有保密性、完整性和可用性的通用控件的支持時,Docker可能會讓人失望。
當(dāng)Docker運行在云提供商平臺上時,Docker安全性變得更加復(fù)雜。需要知道云提供商正在做什么,或許用戶正在于別人共享一臺機器。
Docker雖然容器沒有內(nèi)置的安全因素,而且像Docker這樣的新興技術(shù)很難有比較全面的安全措施,但這并不意味著以后也不會出現(xiàn)。
7. 容器部署安全
也有專家將Docker安全問題的實質(zhì)定位于配置安全,認(rèn)為Docker的問題是很難配置一個安全的容器。雖然Docker的開發(fā)人員通過創(chuàng)建非常小的容器來降低攻擊面,但問題在于大型企業(yè)內(nèi)部在生產(chǎn)環(huán)境中運行Docker容器的員工需要有更多的可見性和可控性。
企業(yè)在部署數(shù)千或數(shù)萬臺Docker容器時,能夠確保這些Docker容器都遵守企業(yè)安全策略進行配置是至關(guān)重要的事情。
Docker為解決這個問題,就需要增加Docker容器部署的實時可見性,同時實施企業(yè)制定的安全策略。也有一些廠商為此推出解決方案,給運營商提供了實時可見性并幫助他們執(zhí)行容器級別的虛擬基礎(chǔ)設(shè)施的安全策略。
編輯:黃飛
-
Linux
+關(guān)注
關(guān)注
87文章
11345瀏覽量
210392 -
ip地址
+關(guān)注
關(guān)注
0文章
303瀏覽量
17129 -
容器
+關(guān)注
關(guān)注
0文章
499瀏覽量
22120 -
虛擬機
+關(guān)注
關(guān)注
1文章
937瀏覽量
28426 -
Docker
+關(guān)注
關(guān)注
0文章
492瀏覽量
11964
原文標(biāo)題:Docker的使用案例以及未來發(fā)展、Docker Hub 服務(wù)、環(huán)境安全、容器部署安全
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論