不可不知的關于Docker的十件事
如果你在企業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是容器包的領導者,你需要考慮它的調卷。這些條款是什么取決于你和你企業基礎設施的狀態。