這兩年容器技術及其相關工具,平臺異常火爆。在各大技術論壇或雲計算峯會議題中,都會佔很大比重,各主流雲計算平臺也無一例外地迅速提供了容器服務。
大廠都在用docker
搜索docker熱度服務器


docker能幹什麼?網絡


- 簡化配置
- 這是Docker公司宣傳的Docker的主要使用場景。虛擬機的最大好處是能在你的硬件設施上運行各類配置不同的平臺(軟件、系統),Docker在下降額外開銷的狀況下提供了一樣的功能。它能讓你將運行環境和配置放在代碼中而後部署,同一個Docker的配置能夠在不一樣的環境中使用,這樣就下降了硬件要求和應用環境之間耦合度。
- 代碼流水線(Code Pipeline)
- 管理前一個場景對於管理代碼的流水線起到了很大的幫助。代碼從開發者的機器到最終在生產環境上的部署,須要通過不少的中間環境。而每個中間環境都有本身微小的差異,Docker給應用提供了一個從開發到上線均一致的環境,讓代碼的流水線變得簡單很多。
- 提升開發效率
- 這就帶來了一些額外的好處:Docker能提高開發者的開發效率。若是你想看一個詳細一點的例子,能夠參考Aater在DevOpsDays Austin 2014 大會或者是DockerCon上的演講。不一樣的開發環境中,咱們都想把兩件事作好。一是咱們想讓開發環境儘可能貼近生產環境,二是咱們想快速搭建開發環境。理想狀態中,要達到第一個目標,咱們須要將每個服務都跑在獨立的虛擬機中以便監控生產環境中服務的運行狀態。然而,咱們卻不想每次都須要網絡鏈接,每次從新編譯的時候遠程鏈接上去特別麻煩。這就是Docker作的特別好的地方,開發環境的機器一般內存比較小,以前使用虛擬的時候,咱們常常須要爲開發環境的機器加內存,而如今Docker能夠輕易的讓幾十個服務在Docker中跑起來。
- 隔離應用
- 有不少種緣由會讓你選擇在一個機器上運行不一樣的應用,好比以前提到的提升開發效率的場景等。咱們常常須要考慮兩點,一是由於要下降成本而進行服務器整合,二是將一個總體式的應用拆分紅松耦合的單個服務(譯者注:微服務架構)。若是你想了解爲何鬆耦合的應用這麼重要,請參考Steve Yege的這篇論文,文中將Google和亞馬遜作了比較。
- 整合服務器
- 正如經過虛擬機來整合多個應用,Docker隔離應用的能力使得Docker能夠整合多個服務器以下降成本。因爲沒有多個操做系統的內存佔用,以及能在多個實例之間共享沒有使用的內存,Docker能夠比虛擬機提供更好的服務器整合解決方案。
- 調試能力Docker
- 提供了不少的工具,這些工具不必定只是針對容器,可是卻適用於容器。它們提供了不少的功能,包括能夠爲容器設置檢查點、設置版本和查看兩個容器之間的差異,這些特性能夠幫助調試Bug。
- 多租戶環境
- 另一個Docker有意思的使用場景是在多租戶的應用中,它能夠避免關鍵應用的重寫。咱們一個特別的關於這個場景的例子是爲IoT(譯者注:物聯網)的應用開發一個快速、易用的多租戶環境。這種多租戶的基本代碼很是複雜,很難處理,從新規劃這樣一個應用不但消耗時間,也浪費金錢。使用Docker,能夠爲每個租戶的應用層的多個實例建立隔離的環境,這不只簡單並且成本低廉,固然這一切得益於Docker環境的啓動速度和其高效的diff命令。
- 快速部署
- 在虛擬機以前,引入新的硬件資源須要消耗幾天的時間。Docker的虛擬化技術將這個時間降到了幾分鐘,Docker只是建立一個容器進程而無需啓動操做系統,這個過程只須要秒級的時間。這正是Google和Facebook都看重的特性。你能夠在數據中心建立銷燬資源而無需擔憂從新啓動帶來的開銷。一般數據中心的資源利用率只有30%,經過使用Docker並進行有效的資源分配能夠提升資源的利用率。
容器編排工具架構
- kubernetes 和 docker swarm

DevOps = 文化+過程+工具框架
DevOps的出現有其必然性。在軟件開發生命週期中,遇到了兩次瓶頸。第一次瓶頸是在需求階段和開發階段之間,針對不斷變化的需求,對軟件開發者提出了高要求,後來出現了敏捷方法論,強調適應需求、快速迭代、持續交付。第二個瓶頸是在開發階段和構建部署階段之間,大量完成的開發任務可能阻塞在部署階段,影響交付,因而有了DevOps。
DevOps的三大原則:運維
- 基礎設施即代碼(Infrastructure as Code)
- DeveOps的基礎是將重複的事情使用自動化腳本或軟件來實現,例如Docker(容器化)、Jenkins(持續集成)、Puppet(基礎架構構建)、Vagrant(虛擬化平臺)等
- 持續交付(Continuous Delivery)
- 持續交付是在生產環境發佈可靠的軟件並交付給用戶使用。而持續部署則不必定交付給用戶使用。涉及到2個時間,TTR(Time to Repair)修復時間,TTM(Time To Marketing)產品上線時間。要作到高效交付可靠的軟件,須要儘量的減小這2個時間。部署能夠有多種方式,好比藍綠部署、金絲雀部署等。
- 協同工做(Culture of Collaboration)
- 開發者和運維人員必須按期進行密切的合做。開發應該把運維角色理解成軟件的另外一個用戶羣體。協做有幾個的建議:
- 一、自動化(減小沒必要要的協做);
- 二、小範圍(每次修改的內容不宜過多,減小發布的風險);
- 三、統一信息集散地(如wiki,讓雙方可以共享信息);
- 四、標準化協做工具(好比jenkins)
年薪前五的Docker職位:微服務
一、DevOps 工程師 工具
排在首位的是 DevOps 工程師,他們消除了開發、發佈和 Ops 團隊之間的溝通障礙,實現了更快更頻繁的軟件交付。測試
平均年薪: $119,552雲計算
二、軟件工程師 / 高級軟件工程師
在這個角色中,你將使用 Docker 打包整個棧(例如應用程序的庫、框架和代碼自己),並將其做爲一個單獨的包發佈——沒必要擔憂每一個單獨的組件是否會在不一樣的環境中運行。
平均年薪:$107,094 到 $117,927
三、軟件架構師
專一於 DevOps 的軟件架構師利用他們在配置、自動化和運維方面的經驗來從新定義架構,構建溝統統道並作出高級設計選擇。
平均年薪:$141,965
四、全棧開發人員
在這個角色中,你將把 Docker 歸入到開發組合中,以加速應用程序的生產、測試和部署。
平均年薪: $110,848
五、雲工程師
做爲一名雲工程師,你將利用 Docker 和其餘工具來管理、自動化、擴展和監控雲中的解決方案。
平均年薪: $118,365
容器和 Docker 在過去幾年裏改變了測試和軟件工程, Docker 在 2018 年佔容器使用量的 83%,2019 年佔 99%,並且愈來愈多的企業在使用Docker。
文章綜合整理於網絡