前言
雲計算、大數據,移動技術的快速發展,加之企業業務需求的不斷變化,致使企業架構要隨時更改以適合業務需求,跟上技術更新的步伐。毫無疑問,這些重擔都將壓在企業開發人員身上;團隊之間如何高效協調,快速交付產品,快速部署應用,以及知足企業業務需求,是開發人員亟需解決的問題。Docker技術剛好能夠幫助開發人員解決這些問題。html
什麼是Docker
Docker的英文本意是「搬運工」,在程序員的世界裏,Docker搬運的是集裝箱(Container),集裝箱裏裝的是任意類型的App,開發者經過Docker能夠將App變成一種標準化的、可移植的、自管理的組件,能夠在任何主流系統中開發、調試和運行。最重要的是,它不依賴於任何語言、框架或系統。能夠說Docker是一個開源的引擎,能夠輕鬆的爲任何應用建立一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試經過的容器能夠批量地在生產環境中部署,包括VMs(虛擬機)、bare metal、OpenStack 集羣和其餘的基礎應用平臺。
Docker一般用於以下場景:1.web應用的自動化打包和發佈;二、自動化測試和持續集成、發佈;三、在服務型環境中部署和調整數據庫或其餘的後臺應用;四、從頭編譯或者擴展示有的OpenShift或Cloud Foundry平臺來搭建本身的PaaS環境。
爲何使用Docker
那麼應用容器長什麼樣子呢,一個作好的應用容器長得就好像一個裝好了一組特定應用的虛擬機同樣。好比我如今想用MySQL那我就找個裝好MySQL的容器,運行起來,那麼我就可使用 MySQL了。
那麼我直接裝個 MySQL不就行了,何須還須要這個容器這麼詭異的概念?話是這麼說,但是你要真裝MySQL的話可能要再裝一堆依賴庫,根據你的操做系統平臺和版本進行設置,有時候還要從源代碼編譯報出一堆莫名其妙的錯誤,可不是這麼好裝。並且萬一你機器掛了,全部的東西都要從新來,可能還要把配置在從新弄一遍。可是有了容器,你就至關於有了一個能夠運行起來的虛擬機,只要你能運行容器,MySQL的配置就全省了。並且一旦你想換臺機器,直接把這個容器端起來,再放到另外一個機器就行了。硬件,操做系統,運行環境什麼的都不須要考慮了。
在公司中的一個很大的用途就是能夠保證線下的開發環境、測試環境和線上的生產環境一致。當年在 Baidu 常常碰到這樣的事情,開發把東西作好了給測試去測,通常會給一坨代碼和一個介紹上線步驟的上線單。結果代碼在測試機跑不起來,開發就跑來跑去看問題,一下子啊這個配置文件忘了提交了,一下子啊這個上線命令寫錯了。找到了一個 bug 提上去,開發一看,啊我怎麼又忘了把這個命令寫在上線單上了。相似的事情在上線的時候還會發生,變成啊你這個軟件的版本和我機器上的不同……在 Amazon 的時候,因爲一個開發直接擔任上述三個職位,並且有一套自動化部署的機制因此問題會少一點,可是上線的時候你們仍是膽戰心驚。
若果利用容器的話,那麼開發直接在容器裏開發,提測的時候把整個容器給測試,測好了把改動改在容器裏再上線就行了。經過容器,整個開發、測試和生產環境能夠保持高度的一致。
Docker在ubuntu下安裝
Docker 支持多種平臺下的安裝運行,如今咱們選取結合度最高的ubuntu來講明安裝過程。
首先須要明確Docker支持的ubuntu版本:程序員
Ubuntu Trusty 14.04 (LTS) (64-bit) Ubuntu Precise 12.04 (LTS) (64-bit) Ubuntu Raring 13.04 and Saucy 13.10 (64 bit)
目前Docker僅支持以上三種ubuntu版本。請你們在安裝時,確認ubuntu版本。
若是你準備啓用UFW的話,請參考如下額外步驟:
Docker使用橋接技術來管理各容器的網絡訪問。可是Ubuntu默認是關閉對外網絡訪問的,因此在安裝以前你須要啓用防火牆的網絡訪問功能。web
$ sudo nano /etc/default/ufw # Change: # DEFAULT_FORWARD_POLICY="DROP" # to DEFAULT_FORWARD_POLICY="ACCEPT"
修改完成後,咱們須要從新加載UFW。docker
$ sudo ufw reload
UFW默認存在一套網絡訪問規則,若是你須要其餘服務器能夠訪問到你的虛擬容器,那麼就須要修改一下UFW的訪問規則(Docker默認端口是2375,因此須要UFW容許2375的數據訪問)。數據庫
$ sudo ufw allow 2375/tcp
(由於Ubuntu的安裝過程相似,咱們只以一個版本的安裝爲例)ubuntu
Ubuntu Trusty 14.04 (LTS) (64-bit)
Ubuntu Trusty使用的是3.13.0的Linux內核,在安裝Docker時須要安裝docker.io,安裝過程當中所須要的各類依賴包均可以在Ubunut官方資料庫中找到。
Ubuntu (或者Debian)由於歷史緣由,內置了一個叫作docker的KDE3/GNOME2安裝包,因此咱們須要安裝和執行的docker應用名稱都改成docker.io
Installation
執行如下命令,就能夠安裝docker的最新版本(至少在譯者翻譯時爲最新版本╮(╯▽╰)╭)安全
$ sudo apt-get update $ sudo apt-get install docker.io $ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker $ sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io
OK了,執行完以上命令後,Docker在Ubuntu上面就安裝好了。固然過一段時間後,你安裝的版本就不會是最新版本了。這種狀況下你能夠安裝如下的方式進行Docker升級。
一、確認/usr/lib/apt/methods/https是否存在,若是不存在,那麼先安裝apt-transport-https( apt-get install apt-transport-https )。bash
二、將Docker官方資料庫的訪問Key添加到你本地系統。服務器
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
三、上面一步執行成功後,就開始安裝Lxc-docker包。網絡
$ sudo sh -c "echo deb https://get.docker.io/ubuntu docker main\ > /etc/apt/sources.list.d/docker.list" $ sudo apt-get update $ sudo apt-get install lxc-docker
四、若是你感受以上三步很麻煩,那麼就執行下面的這一句吧(前提是CURL已經安裝好了)。
$ curl -sSL https://get.docker.io/ubuntu/ | sudo sh
講過以上幾步,你就安裝最新版本的docker了。最後就是開始執行docker吧
$ sudo docker run -i -t ubuntu /bin/bash
Docker將來發展
任何一項新技術的出現,都須要一個發展過程,好比雲計算爲企業所接受用了將近五年左右時間,OpenStack技術也經歷了兩、三年才受到人們的承認。所以,雖然Docker技術發展很快,但技術還不夠成熟,對存儲的靈活的支持、網絡的開銷和兼容性方面還存在限制,這是Docker沒有被企業大範圍使用的一個主要緣由。另一個緣由是企業文化是否與DevOps運動一致,只有企業支持DevOps,才能更大地發揮Docker的價值。最後一個緣由就是安全性問題,Docker對於Linux這一層的安全的隔離還有待改進,才能進一步獲得企業的承認。惠普劉豔凱認爲,這也是Docker須要在下一步中改進的一方面。
相關資料
Docker,從這裏作起
5分鐘弄懂Docker!
Docker學習總結之docker安裝 - vikings`s blog
docker中文網