1. 程式人生 > >關於Docker你應該知道的10件事

關於Docker你應該知道的10件事

如果你在企業IT工作,那你會聽說過Docker。即使在是像Puppet、Hadoop和MongoDB這樣的熱門技術中,Docker也會脫穎而出。

但正是因為Docker正處於炒作期,因此這並不意味著它適合你。正如我們Tech  Pro Research分析中指出,“不管你的公司是否給了Docker一個肯定的‘可能’,需要警惕。”

但是,在你下載Docker並使用起來之前,有10件事情是你應該對這項超人氣容器技術應該瞭解的。

1、Docker是一種打包和分發軟體的方式

一個現代的軟體系統包括許多部分,包括二進位制檔案、庫檔案、配置檔案和依賴性。將這些不同的元件裝成一臺機器可不是一件容易的事情,但你“出貨”這款軟體的時候就更加複雜了。一旦你出貨了你的軟體,你就需要找到一種方式,將所有這些東西打包到一起、把它們放到需要執行的地方。Docker就是這樣一種容器技術,讓打包軟體以及所有元件之間的依賴性、提供給開發者、分期或者生產、或者傳送到需要執行的地方,所有這些變得非常輕鬆。

2、Docker並不是特別新的技術

Docker問世只有短短几年時間,但是容器技術已經伴隨我們有幾十年了。雖然容器在大型機時代很有用處,但是Docker現在發揮才能是受很多因素影響的,包括Linux日益突出、虛擬化技術的普及、以及雲對作業系統重要性的侵蝕。

3、幾乎每個人都提供了Docker

不管你選擇的廠商恰好是誰,幾乎這些廠商100%都支援Docker。從Amazon Web Services到Red Hat,再到Google,人人都愛Docker。

4、Docker並不只是面向Linux

Docker紮根於Docker,但是微軟把它發揚光大。或者它一定會如此。Docker依賴於像Linux Containers(LXC)這樣的Linux技術,以及cgroups和名稱空間功能,這些在Windows尚不存在。因此微軟正在奮力構建這之間的掛接,使得Docker容器也能夠執行在Windows Server上。微軟在Windows上執行自己的容器技術已經有多年時間了,但是微軟正在擴大範圍,也支援Docker這個社群標準。

5、Docker讓你分配特定量的CPU、記憶體和磁碟資源給每個程序,就像虛擬機器

在Docker的核心是Linux cgroups(控制組),提供計算和限制容器使用CPU、記憶體、網路、磁碟資源數量的方法。這提供了一些虛擬化的好處,例如能夠分配出一臺計算機給少量的資源,這樣你就不用讓一個程序佔用所有計算機讓其他程序沒有資源可用——但是這並不會帶來VMware那樣沉重的開銷或者成本。

6、Docker比啟動一個虛擬機器快(微秒對分鐘)

如果你想要在一臺伺服器上執行多個任務,那麼傳統的方法是將其劃分為多個虛擬機器,使用每個虛擬機器來執行一個任務。但是虛擬機器啟動很慢,因為它們必須啟動整個作業系統,這要花上幾分鐘的時間。而且這會佔用大量資源,因為每個虛擬機器都需要執行一個完整的作業系統例項。容器則提供了某種類似的行為,但是速度更快一些,因為啟動一個容器就像啟動一個程序。Docker的開銷也更少——實際上不會多過一個程序。

7、但是,Docker不消滅掉虛擬機器

Docker並不是虛擬機器的對等替代物,因為它要求你所有的容器共享相同的底層作業系統。這意味著,例如你不能在同一臺伺服器上同時執行Windows和Linux應用。而且,隨著Docker容器脫穎而出,它的安全隔離要弱於虛擬機器,這也使得它成為某種多租戶的不恰當的選擇。

8、Docker的開發速度相當迅猛

登上Docker這趟列車可不像是乘坐蒸汽機,而更像是跳上了日本子彈頭火車……它以250 MPH的速度向你呼嘯而來。考慮到Docker只有一年半的API已經有了15個修訂版本,你會知道它變化地有多快。雖然Docker“已經成熟,因為它正在成長為一款穩定的、企業值得使用的軟體”,但是它仍然沒有能持續10年的支援承諾,這通常是企業對他們的軟體的期望。

9、Docker正面臨日益激烈的競爭

隨著Docker越來越受歡迎,它不可避免地要面臨競爭。例如,CoreOS最近釋出了一個與之競爭的Docker執行時間,Rocket和Linux青睞的Ubuntu也有自己的LXD容器專案。這些和其他競爭似乎都在指責Docker封閉的生態系統。在Docker的世界,所有都依賴於Docker註冊。你必須依賴公司的登錄檔,在你自己的資料中心執行一個Docker拷貝,這不是免費的。

10、你應該謹慎行事

正如對待任何新技術,你可能會在使用Docker之間考慮考慮。從技術的角度來看,你應該在逐漸熟悉在Docker容器中執行應用的同時考慮哪些該做哪些不該做。但這不僅僅是程式碼。正如正面所說,Docker的社群可能並不適合你。你應該加入社群——參加聚會、閱讀、並加入到郵件列表中,等等——並決定你是否希望在Docker上投入你的時間。

不管你是以何種方式接觸到Docker,容器技術都已經來臨。Docker使得現代計算中複雜的東西變得簡化了。Docker是容器包的領導者,你需要考慮它的調卷。這些條款是什麼取決於你和你企業基礎設施的狀態。