以我自己的經(jīng)歷刷袍,告訴大家這個(gè)東西有點(diǎn)兒不太好理解,想要理解透徹耸成,那么我就需要知道一些背景知識(shí)來幫助我們理解
Docker的思想來自于集裝箱叛拷,集裝箱解決了什么問題舌厨?
在一艘大船上,可以把貨物規(guī)整的擺放起來忿薇。并且各種各樣的貨物被集裝箱標(biāo)準(zhǔn)化了裙椭,集裝箱和集裝箱之間不會(huì)互相影響。那么我就不需要專門運(yùn)送水果的船和專門運(yùn)送化學(xué)品的船了。只要這些貨物在集裝箱里封裝的好好的,那我就可以用一艘大船把他們都運(yùn)走葵孤。
docker就是類似的理念。現(xiàn)在都流行云計(jì)算了,云計(jì)算就好比大貨輪器联。docker就是集裝箱二汛。
用Docker的logo來解釋,鯨魚和集裝箱
那個(gè)大鯨魚(或者是貨輪)就是操作系統(tǒng)
把要交付的應(yīng)用程序看成是各種貨物拨拓,原本要將各種各樣形狀肴颊、尺寸不同的貨物放到大鯨魚上,你得為每件貨物考慮怎么安放(就是應(yīng)用程序配套的環(huán)境)渣磷,還得考慮貨物和貨物是否能疊起來(應(yīng)用程序依賴的環(huán)境是否會(huì)沖突)婿着。
現(xiàn)在使用了集裝箱(容器)把每件貨物都放到集裝箱里,這樣大鯨魚可以用同樣地方式安放醋界、堆疊集裝了竟宋,省事省力。
Docker就是這整套機(jī)制啦
Docker是什么形纺?
Docker 是一種應(yīng)用容器化交付的技術(shù)丘侠。從操作系統(tǒng)到依賴庫亂七八糟東西全給你“靜態(tài)編譯”到一起變成一個(gè) super fat binary,就是一個(gè)容器逐样。
學(xué)習(xí)任何一個(gè)開源新技術(shù)蜗字,首先問自己幾個(gè)問題:
- 為什要學(xué)習(xí)它?
- 學(xué)習(xí)它需要了解哪些相關(guān)知識(shí)點(diǎn)脂新?
- 如何快速學(xué)習(xí)挪捕?
- 該技術(shù)的使用場景是什么?
拿我個(gè)人的學(xué)習(xí)經(jīng)驗(yàn)來舉例(本人之前比較了解OpenStack)
1.為什要學(xué)習(xí)docker争便?
回答:
docker是輕量級(jí)虛擬化技術(shù)级零,docker使linux容器技術(shù)的應(yīng)用更加簡單和標(biāo)準(zhǔn)化
docker的速度很快,容器啟動(dòng)時(shí)毫秒級(jí)的
docker將開發(fā)和運(yùn)維職責(zé)分清docker解決了依賴地獄問題
docker支持幾乎所有操作系統(tǒng)
docker有著飛速發(fā)展的生態(tài)圈很多IT巨頭逐漸加入和支持
2.學(xué)習(xí)它需要了解哪些相關(guān)知識(shí)點(diǎn)?
回答:
云計(jì)算概念相關(guān)(restapi, 微服務(wù)滞乙,OpenStack)
Linux 系統(tǒng)管理(軟件包管理妄讯,用戶管理孩锡,進(jìn)程管理等)
Linux 內(nèi)核相關(guān)(Cgroup, namespace 等)
Linux 文件系統(tǒng)和存儲(chǔ)相關(guān)(AUFS,BRFS,devicemapper 等)
Linux 網(wǎng)絡(luò)(網(wǎng)橋亥贸,veth,iptables等)
Linux安全相關(guān)(Appmor,Selinux 等)
Linux進(jìn)程管理(Supervisord,Systemd etc)
Linux容器技術(shù)(LXC等)開發(fā)語言(Python, GO,Shell 等)
3.如何快速學(xué)習(xí)躬窜?
回答:
個(gè)人體會(huì)最好有一個(gè)實(shí)際的需求或項(xiàng)目來邊實(shí)踐邊學(xué)習(xí),入門可以參考(第一本docker書)寫的不錯(cuò)炕置,非常適合入門荣挨。除此之外,閱讀牛人的blog比如官方blog http://blog.docker.com/最后朴摊,參與社區(qū)互動(dòng)也是很好的學(xué)習(xí)方式默垄。
4.該技術(shù)的使用場景是什么?
回答:
docker非常適用于dev/test CI/CD 場景甚纲,用完就扔口锭。還有就是PasS了。
為什么要使用 Docker介杆?
作為一種新興的虛擬化方式鹃操,Docker 跟傳統(tǒng)的虛擬化方式相比具有眾多的優(yōu)勢。
(1)更高效的利用系統(tǒng)資源
由于容器不需要進(jìn)行硬件虛擬以及運(yùn)行完整操作系統(tǒng)等額外開銷春哨,Docker 對(duì)系統(tǒng)資源的利用率更高荆隘。無論是應(yīng)用執(zhí)行速度、內(nèi)存損耗或者文件存儲(chǔ)速度赴背,都要比傳統(tǒng)虛擬機(jī)技術(shù)更高效椰拒。因此,相比虛擬機(jī)技術(shù)凰荚,一個(gè)相同配置的主機(jī)燃观,往往可以運(yùn)行更多數(shù)量的應(yīng)用。
(2)更快速的啟動(dòng)時(shí)間
傳統(tǒng)的虛擬機(jī)技術(shù)啟動(dòng)應(yīng)用服務(wù)往往需要數(shù)分鐘便瑟,而 Docker 容器應(yīng)用仪壮,由于直接運(yùn)行于宿主內(nèi)核,無需啟動(dòng)完整的操作系統(tǒng)胳徽,因此可以做到秒級(jí)积锅、甚至毫秒級(jí)的啟動(dòng)時(shí)間。大大的節(jié)約了開發(fā)养盗、測試缚陷、部署的時(shí)間。
(3)一致的運(yùn)行環(huán)境
開發(fā)過程中一個(gè)常見的問題是環(huán)境一致性問題往核。由于開發(fā)環(huán)境箫爷、測試環(huán)境、生產(chǎn)環(huán)境不一致,導(dǎo)致有些 bug 并未在開發(fā)過程中被發(fā)現(xiàn)虎锚。而 Docker 的鏡像提供了除內(nèi)核外完整的運(yùn)行時(shí)環(huán)境硫痰,確保了應(yīng)用運(yùn)行環(huán)境一致性,從而不會(huì)再出現(xiàn) “這段代碼在我機(jī)器上沒問題啊” 這類問題窜护。
(4)持續(xù)交付和部署
對(duì)開發(fā)和運(yùn)維(DevOps)人員來說效斑,最希望的就是一次創(chuàng)建或配置,可以在任意地方正常運(yùn)行柱徙。
使用 Docker 可以通過定制應(yīng)用鏡像來實(shí)現(xiàn)持續(xù)集成缓屠、持續(xù)交付、部署护侮。開發(fā)人員可以通過 Dockerfile 來進(jìn)行鏡像構(gòu)建敌完,并結(jié)合 持續(xù)集成(Continuous Integration) 系統(tǒng)進(jìn)行集成測試,而運(yùn)維人員則可以直接在生產(chǎn)環(huán)境中快速部署該鏡像羊初,甚至結(jié)合 持續(xù)部署(Continuous Delivery/Deployment) 系統(tǒng)進(jìn)行自動(dòng)部署滨溉。
而且使用 Dockerfile使鏡像構(gòu)建透明化,不僅僅開發(fā)團(tuán)隊(duì)可以理解應(yīng)用運(yùn)行環(huán)境长赞,也方便運(yùn)維團(tuán)隊(duì)理解應(yīng)用運(yùn)行所需條件晦攒,幫助更好的生產(chǎn)環(huán)境中部署該鏡像。
(5)更輕松的遷移
由于 Docker 確保了執(zhí)行環(huán)境的一致性涧卵,使得應(yīng)用的遷移更加容易。Docker 可以在很多平臺(tái)上運(yùn)行腹尖,無論是物理機(jī)柳恐、虛擬機(jī)、公有云热幔、私有云乐设,甚至是筆記本,其運(yùn)行結(jié)果是一致的绎巨。因此用戶可以很輕易的將在一個(gè)平臺(tái)上運(yùn)行的應(yīng)用近尚,遷移到另一個(gè)平臺(tái)上,而不用擔(dān)心運(yùn)行環(huán)境的變化導(dǎo)致應(yīng)用無法正常運(yùn)行的情況场勤。
(6)更輕松的維護(hù)和擴(kuò)展
Docker 使用的分層存儲(chǔ)以及鏡像的技術(shù)戈锻,使得應(yīng)用重復(fù)部分的復(fù)用更為容易,也使得應(yīng)用的維護(hù)更新更加簡單和媳,基于基礎(chǔ)鏡像進(jìn)一步擴(kuò)展鏡像也變得非常簡單格遭。此外,Docker 團(tuán)隊(duì)同各個(gè)開源項(xiàng)目團(tuán)隊(duì)一起維護(hù)了一大批高質(zhì)量的官方鏡像留瞳,既可以直接在生產(chǎn)環(huán)境使用拒迅,又可以作為基礎(chǔ)進(jìn)一步定制,大大的降低了應(yīng)用服務(wù)的鏡像制作成本。
docker學(xué)習(xí)網(wǎng)站:
阿里中間件團(tuán)隊(duì)博客:http://jm.taobao.org/2016/05/12/introduction-to-docker/
更高效的利用系統(tǒng)資源璧微,更快速的啟動(dòng)時(shí)間作箍,一致的運(yùn)行環(huán)境,
持續(xù)交付和部署前硫,更輕松的遷移胞得,更輕松的維護(hù)和擴(kuò)展
http://blog.csdn.net/xyz_dream/article/details/53081687
http://www.reibang.com/p/a75ddf6915e0
http://www.reibang.com/p/4b5637fd53e5
http://www.cnblogs.com/52fhy/p/6009727.html
http://www.cnblogs.com/vikings-blog/p/3958091.html
https://yeasy.gitbooks.io/docker_practice/content/basic_concept/image.html