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