各位前輩請問docker怎麼樣呀,有什麼學習資料(博客呀、網站呀等)給推薦一下,謝謝?
談起Docker,小黑羊禁不住想起小時候在冷藏廠打工的經歷.....
為什麼冷藏廠會亂入?因為那簡直是虛擬化和Docker活生生的例子。
首先你得有個庫房&>&>
這庫房敞亮吧,能造庫房的包工頭很多,比如華為、惠普、Dell、聯想、曙光、浪潮之類的。
這些庫房有個高大上的名字,叫物理伺服器。
魚呀、肉啊就可以存到庫房了嗎?當然不行!
你需要低溫才可以保鮮!
所以你得有制冷機&>&>
主流的制冷機有兩大系列
Windows制冷機和Linux制冷機
配備了制冷機的庫房就可以正常Work啦
最初的冷庫就是這個樣子
但是問題來了,各種庫藏品都很矯情。
怕串味兒怎麼辦?溫度要求不一致怎麼辦?
SO--
冷庫虛擬化來啦&>&>
有個叫VMware的泥瓦匠想了個辦法,他把庫房隔成很多叫做「虛擬機」的小房間,「密封」起來,每個房間放一個制冷機,這就是冷庫虛擬化。
不怕串味兒,每個小房間的溫度獨立可控,魚呀蝦呀表示很Happy。
世界清凈了,後來還有幾個泥瓦匠也學會了庫房分隔術,到處給人修冷庫。
泥瓦匠Vmware用的砌牆工具叫ESXi
泥瓦匠Citrix用的砌牆工具叫Xen Server
泥瓦匠Microsoft用的砌牆工具叫Hyper-V
還有一些草根泥瓦匠用的工具叫KVM
可是這世界上矯情的人太多,如此完美的方案他們還是吹毛求疵瞎BB:
還能不能想點別的辦法?
於是--
冷庫Docker出世&>&>
制冷機Linux是個喜歡動腦筋的好青年,它發明了一種叫「LXC」的「軟隔離」技術,冷庫分隔成叫做「容器」的小單間,但每個房間不需要單獨安裝制冷機,只要布些導冷管和溫控閥門,這樣看起來就達到目的了。
後來有人把「LXC」這種「軟隔離」技術發揚光大,用一堆「GO」零件進行改裝,可以大幅提高冷庫的建設和改進速度,於是Docker橫空出世了!
Docker被業內稱為容器管理引擎,在小黑羊看來,其實它就是一套給冷庫快速建「單間」和鋪「導冷管」的裝置,源於LXC,但是更智能。
比如,有些「冷庫」的使用者不知道儲存「冷凍大蝦」的單間該建成什麼樣,「導冷管」該怎麼排布。Docker就建了一個「樣板間」展覽中心,小白們仿照「樣板間」在自家冷庫里可以原樣造一個出來,這種「樣板間」被稱為「Docker鏡像」,展覽中心被稱為「Docker Hub」。
Docker Hub,你懂滴所以,用Docker建的冷庫是這樣子滴。
兩類冷庫哪家強?
有了Docker是不是虛擬化就歇菜了呢,其實他們各有特色:
上圖和Docker官網略有區別,因為當下主流的Bare-metal虛擬化是沒有 Host OS這一層的,Docker官網的原圖對虛擬化進行了「蓄意」削弱,或者它主要針對KVM這類「半裸」虛擬化吧。
Docker的優勢很明顯:
佔用資源少:共享一個制冷機(OS),各個單間埋導冷管(Bins/Libs)就行了。
部署快:不用建實體牆隔離(多NameSpace),有樣板間可參考(鏡像服務)
啟動快:擰開導冷管的閥門就可以了(共享主機OS Kernel,快速載入),比啟動一台「制冷機」方便。
所以對於「臭魚爛蝦」天天要搬進搬出、反覆折騰的客戶來講,Docker很「敏捷」!
但是,與虛擬化相比,Docker也存在一些不足,例如安全性:
1、非實體隔離牆,密封性不好,也許會串味兒。
2、導冷管或者冷器閥受損可能殃及整個製冷壓縮機。
3、有些未經檢疫的樣板間會放到展示中心,對下載者造成傷害。
同時,Docker由於對Linux牌的制冷機過於依賴,導致對Windows制冷機無法原生支持。
不過這一點,也許將來不是問題,據說Windows家那位財大氣粗的老闆有包養Docker的計劃。
國內有哪些Docker創業公司&>&>
道客雲DaoCloudDaoCloud
希雲cSphere
企業級Docker管理平台
靈雀雲靈雀雲容器服務(CaaS): 靈動輕便,雀躍雲端
時速雲時速雲TenxCloud
數人科技DataMan數人科技 - 開啟雲的力量
以上僅為簡單羅列,感興趣的看客可以去他們官網細細研究。
主流雲服務商的Docker支持現狀
AWS去年11月發布了EC2 Container服務,讓EC2用戶可以比較方便的管理軟體容器,支持Docker。
除去AWS,其餘幾家雲服務商都沒能做到Docker服務的自動化。
Azure提供了一個Docker擴展插件,讓linux虛擬機可以支持Docker,目前僅止於此,至於未來對Docker的支持,微軟倒是畫了不少大餅,希望不要像傳說中的Win10讓人失望。
阿里雲提供Docker本地鏡像下載服務,鏡像部分與Docker HUB同步,也可以在ECS上把應用打包成Docker鏡像、運行Docker容器。在OS方面,阿里雲沒有提供專用OS鏡像。
百度雲百度應用引擎BAE3.0是基於Docker架構提供服務的,而以前採用的是沙盒模式。
騰訊雲提供了一個ubuntu12.04 Docker專用鏡像,並在年初宣稱自己是國內首家支持Docker Machine的雲平台。
UnitedStack有雲支持CoreOS鏡像(提供另一種容器管理標準),最近有雲又發布了對Atomic OS的支持,Atomic集成了Kubernetes調度系統,同時提供了Geard工具來部署多個容器。
QingCloud青雲青雲也支持了兩種Docker專用OS,一個是CoreOS,另一個是由前面希雲發布的cSphere OS。
UCLOUD未提供Docker相關服務或選擇,但其雲資料庫UDB據說是基於Docker工作的。
http://docs.docker.com 官網文檔,必看經典。
http://dockone.io 不錯的docker社區,有很多經典文章,教程。
剩下的就是實戰了,有問題找谷歌~居然沒人答這個https://github.com/hangyan/docker-resources
作為國內Docker社區的早期發起人,我推薦的資源有:
讀書:第一本Docker書,人民郵電出版社出版,翻譯自James Turnbull的 The Docker Book
讀文章:InfoQ、CSDN上的Docker相關的文章都可以用。InfoQ的《Docker源碼分析》專欄內容質量非常高
參加活動:http://meetup.com 上的Docker群組會定期發布線下活動,能夠與Docker愛好者現場切磋。
還有就是要把理論應用於實踐,多寫dockerfile,在使用的過程中進階。可以關注一下 您跑應用,我送T恤!DaoCloud用戶專享免費資源和酷炫T恤! ,這是一個Dockerfile的建構活動;也可以關注一下 DaoCloud啟動分享寫作計劃,讓開發者的聲音更響亮 ,這個活動目前已經積累了一些高質量的文章。學一下Docker的一些入門就好,更多的是實踐。另外還有一些資料,在這裡:GitHub - lining0806/DockerNotes: Docker入門精華版Docker 介紹:
Docker是能夠把應用程序自動部署到容器的開源引擎,而容器是一種依託於Linux內核的虛擬化技術,也就是說,如果我們想要一種「隔離」的環境來進行開發,那就用Docker吧。
一說到虛擬化,很自然會聯想到虛擬機,比如我們常用的VMWare。我們可以在宿主機上再安裝一個操作系統,Windows、Linux等。這樣在安裝好的操作系統內進行任何操作,都不會影響到外面的宿主機也就是我們本機電腦的環境。這樣的好處在於,我們可以方便地去進行不同系統的學習以及模擬多台機器的交互。
與虛擬機不同,Docker不需要我們在宿主機上重新安裝一個操作系統,它依賴於宿主機環境,這樣大大節省了程序部署及運行所需要的空間和時間。而Docker容器內的操作,也完全影響不到宿主機,更不會影響到其他容器。
Docker主要由幾部分組成:客戶端,服務端,遠程倉庫。Docker採用了C/S架構,用戶通過在本地客戶端,訪問遠程服務端的守護進程,從而操縱容器。
容器是通過鏡像來創建的,而鏡像保存在倉庫中。需要注意的是,容器類似於會話,只不過它的操作僅僅限於容器內部,而鏡像類似於操作系統,我們可以通過操作系統創建多個會話,類似的,通過一個鏡像可以創建多個容器。
對於Ubuntu Linux操作系統,Docker要求是64位操作系統,如Ubuntu Trusty 14.04 (LTS),並且內核發行號最低要求3.10。
在安裝前需要檢查內核髮型號:uname -aDocker 安裝:安裝方式有兩種。
- 安裝Ubuntu維護的版本(推薦):
1.更新apt數據源:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
touch /etc/apt/sources.list.d/docker.list,
edit deb https://apt.dockerproject.org/repo ubuntu-trusty main
sudo apt-get update
sudo apt-get purge lxc-docker
sudo apt-cache policy docker-engine
2.安裝Docker:
sudo apt-get update
sudo apt-get install docker-engine
安裝Docker維護的版本:
sudo apt-get update
sudo apt-get install curlcurl -fsSL https://get.docker.com/ | sh
Docker 運行:
安裝完Docker後,我們需要在系統上啟動Docker服務:sudo service docker start
這樣,我們就可以運行Docker了。
比如,查看Docker版本:
docker version
運行hello-world鏡像:
docker run hello-world
這裡,Docker會首先檢查本地是否存在hello-world鏡像,如果沒有,則從Docker Hub上拉取,再運行
關於Docker命令,有很多,直接輸入docker help可以查看,講的很清楚。一起來體驗Docker吧~
http://dockone.io
推薦閱讀:
※Docker的作用的主要作用是什麼?
※乾貨 | 解密監控寶Docker監控實現原理
TAG:Docker |