Docker是個新生的事物,概念類似虛擬化。網上關于Docker入門的東西已經很多了。不過本文探討了Docker的特點、特性、原理,還介紹了具有中國特色的安裝測試過程,另外還談到了Docker的社區生態和Dockerfile,并使用Dockerfile構建一個nginx環境。
緣起
在幾個月前聽說Docker,但是一直沒有時間去研究,前一段時間趁著azure免費試用,趕緊實驗一下,但是卡在了ubuntu基礎鏡像的下載上(由于國內網絡的特殊原因),所以也就擱淺了,這里把經驗和體會分享一下。
Docker簡介
我覺得簡單來說,Docker就是一個應用程序執行容器,類似虛擬機的概念。但是與虛擬化技術的不同點在于下面幾點:
1.虛擬化技術依賴物理CPU和內存,是硬件級別的;而docker構建在操作系統上,利用操作系統的containerization技術,所以docker甚至可以在虛擬機上運行。
2.虛擬化系統一般都是指操作系統鏡像,比較復雜,稱為“系統”;而docker開源而且輕量,稱為“容器”,單個容器適合部署少量應用,比如部署一個redis、一個memcached。3.傳統的虛擬化技術使用快照來保存狀態;而docker在保存狀態上不僅更為輕便和低成本,而且引入了類似源代碼管理機制,將容器的快照歷史版本一一記錄,切換成本很低。4.傳統的虛擬化技術在構建系統的時候較為復雜,需要大量的人力;而docker可以通過Dockfile來構建整個容器,重啟和構建速度很快。更重要的是Dockfile可以手動編寫,這樣應用程序開發人員可以通過發布Dockfile來指導系統環境和依賴,這樣對于持續交付十分有利。5.Dockerfile可以基于已經構建好的容器鏡像,創建新容器。Dockerfile可以通過社區分享和下載,有利于該技術的推廣。Docker的主要特性如下(摘自Docker:具備一致性的自動化軟件部署):
文件系統隔離:每個進程容器運行在完全獨立的根文件系統里。
資源隔離:可以使用cgroup為每個進程容器分配不同的系統資源,例如CPU和內存。網絡隔離:每個進程容器運行在自己的網絡命名空間里,擁有自己的虛擬接口和IP地址。寫時復制:采用寫時復制方式創建根文件系統,這讓部署變得極其快捷,并且節省內存和硬盤空間。日志記錄:Docker將會收集和記錄每個進程容器的標準流(stdout/stderr/stdin),用于實時檢索或批量檢索。變更管理:容器文件系統的變更可以提交到新的映像中,并可重復使用以創建更多的容器。無需使用模板或手動配置。交互式Shell:Docker可以分配一個虛擬終端并關聯到任何容器的標準輸入上,例如運行一個一次性交互shell。目前Docker正處在開發階段,官方不建議用于生產環境。另外,Docker是基于Ubuntu開發的,所以官方推薦將其安裝在Ubuntu的操作系統上,目前只能安裝在linux系統上。Docker的使用入門
Docker官方的安裝指導挺詳細的。但是由于國內的特殊情況,我這里基于這個安裝指導,給出適用于國內開發者的入門過程。基于Ubuntu Precise 12.04 (LTS) (64-bit),推薦這個版本,其他版本參考官方安裝手冊。
1、Docker的安裝
首先,Docker官方聲稱最好是運行在Linux內核3.8以上,所以要先進行內核升級# install the backported kernelsudo apt-get updatesudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring# rebootsudo reboot
添加Docker倉庫的key:
復制代碼 代碼如下:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
新聞熱點
疑難解答