標籤:

各位前輩請問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創業公司&>&>

道客雲DaoCloud

DaoCloud

希雲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 -a

Docker 安裝:

安裝方式有兩種。

  • 安裝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 curl

    curl -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 |