一、前言
5W1H法則是在一次面試中學習到的,后來在工作也開始使用這種東西,雖然最后沒去那家公司,但是也是學習到了,關注開這些東西以后,也發現了一些簡化版的3W法則,最近公司也要搞Docekr,所以寫篇博客來說說為什么要學習Docker。
二、What Docker
什么是Docker?Docker是一種容器化的技術,包括一個命令行程序、一個后台守護進程以及一組遠程服務,使應用程序在不同的操作系統上以相同的方式運行,所以要明白什么是Docker我們還需要來聊聊容器的概念。
容器是為應用程序提供隔離的運行空間,每個容器內部都包含一個獨享的完整用戶環境空間,並且容器內的變動不會影響其他容器的運行。這個時候我們又會想到傳統的虛擬化技術他也是一種容器化的技術,接下來我們拿兩者做個比較。
對於傳統虛擬化技術(虛擬機),提供一套完整的操作系統,可以為每個用戶指定CPU、內存等資源,Docker則是使用namespaces來進行空間隔離,通過文件系統的掛載點來決定容器可以訪問哪些文件,通過cgroups來確定每個容器可以利用多少資源,所有的容器共享一個操作系統內核。兩者相比較起來Docker更輕量級些,相比傳統的虛擬化技術來說對系統資源運用的更加充分。
總結下就是,Docker是為應用軟件提供運行空間,以及將應用軟件直接相互隔離,來提升安全性;
三、Why Docker
為什么需要Docker?我認為應該3方面說起:
1.服務端的開發和部署
對於開發和運維人員來說,現在每天面對各種各樣的中間件、各種服務的部署,單純依靠以前的手動部署已經不能滿足現狀,Docket可以通過定制鏡像,來實現一次性創建或配置,可以在任意地方正常運行,使得開發人員和運維人員解放雙手,另外Docker構建和啟動很快,能大量節約開發、測試和部署時間。服務化的今天如果沒有Docker大家可能也沒有這么順風順水。
2.更高效的利用資源
Docker相比於傳統的虛擬化技術來說不需要運行完整的操作系統,可以理解為進程級的,在同等的情況下可以對系統資源更高效的利用;
3.易用性和擴展性
Docker使用起來很簡單,沒有想虛擬化技術那般費勁,簡單的一個命令就能運行起來服務,使得這項技術更加的流行。 Docker采用分層存儲和鏡像技術,使應用的維護和擴展變得非常簡單,另外Docker官方維護很多鏡像,讓大家降低了應用鏡像制作的成本;
四、How Docker
這篇博客先從環境搭建然后到Hello World,下一篇文章帶領大家做一個spring boot連接數據庫,最后補上之前說的Elasticsearch集群搭建(包括Elasticsearch一些參數調優、監控、集群測試),中間也會穿插一些鏡像、容器、網絡和存儲等等這些Docker中的知識,先來啟動Hello World
安裝環境實在騰訊雲上的CentOS 7的版本,通過yum命令來安裝Docker,Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。

1 #查看你當前的內核版本 2 uname -r 3 4 #安裝 Docker 5 yum -y install docker 6 7 #啟動 Docker 后台服務 8 service docker start 9 10 #查看docker版本 11 docker -v
接下來我們來啟動一個Hello World,這里我們暫時不通過Dockerfile的形式去做,通過Docker倉庫來實現將Hello World運行出來,
1.docker search hello-world 先搜索關於hello-world的鏡像
2.docker pull hello-world 拉取hello-world的鏡像到本地服務器
3.docker run hello-world 運行容器
這里就是帶大家完成一個從倉庫拉取到本地鏡像的一個例子,相信使用過Git都比較清楚,通過上面的例子相信大家已經體驗Docker的易用性,接下來會有更詳細的使用介紹;
五、結束
歡迎大家加群438836709!歡迎大家關注我!