第一章:從容器到容器雲
1.1 雲計算平臺
經典雲計算
架構
包括了IaaS(Infrastructure as a Service,基礎設施即服務)、PaaS(Platform as a Service,平臺即服務)、SaaS(Software as a Service,軟件即服務)三層服務
1.2 容器,新的革命
Docker是什麼?git
基於官方的定義,Docker是以Docker容器爲資源分割和調度的基本單位,封裝整個軟件運行時環境,爲開發者和系統管理員設計的,用於構建、發佈和運行分佈式應用的平臺。它是一個跨平臺、可移植而且簡單易用的容器解決方案。Docker的源代碼託管在GitHub上,基於Go語言開發並聽從Apache 2.0協議。Docker可在容器內部快速自動化地部署應用,並經過內核技術(namespaces、cgroups等)爲容器提供資源隔離與安全保障。安全

圍繞Docker的生態系統自下而上分別覆蓋了IaaS層和PaaS層所涉及的各種問題,包括資源調度、編排、部署、配置管理、網絡管理、應用開發和部署平臺、應用開發工具、應用服務供應以及大數據分析等雲計算相關的服務。除了基於Docker技術解決構建分佈式平臺沒法迴避的經典問題,Docker及其生態系統主要帶來了如下幾點好處。網絡
- 持續部署與測試。Docker消除了線上線下的環境差別,保證了應用生命週期的環境一致性和標準化。開發人員使用鏡像實現標準開發環境的構建,開發完成後經過封裝着完整環境和應用的鏡像進行遷移,由此,測試和運維人員能夠直接部署軟件鏡像來進行測試和發佈,大大簡化了持續集成、測試和發佈的過程。
- 跨雲平臺支持。Docker帶來的最大好處之一就是其適配性,愈來愈多的雲平臺都支持Docker,用戶再也無需擔憂受到雲平臺的捆綁,同時也讓應用多平臺混合部署成爲可能。目前支持Docker的IaaS雲平臺包括但不限於亞馬遜雲平臺(AWS)、Google雲平臺(GCP)、微軟雲平臺(Azure)、OpenStack等,還包括如Chef、Puppet、Ansible等配置管理工具。
- 環境標準化和版本控制。基於Docker提供的環境一致性和標準化,你可使用git等工具對Docker鏡像進行版本控制,相比基於代碼的版本控制來講,你還可以對整個應用運行環境實現版本控制,一旦出現故障能夠快速回滾。相比之前的虛擬機鏡像,Docker壓縮和備份速度更快,鏡像啓動也像啓動一個普通進程同樣快速。
- 高資源利用率與隔離。Docker容器沒有管理程序的額外開銷,與底層共享操做系統,性能更加優良,系統負載更低,在同等條件下能夠運行更多的應用實例,能夠更充分地利用系統資源。同時,Docker擁有不錯的資源隔離與限制能力,能夠精確地對應用分配CPU、內存等資源,保證了應用間不會相互影響。
- 容器便攜性與鏡像。Linux容器雖然早在Linux 2.6版本內核已經存在,可是缺乏容器的便攜性,難以推廣。Docker在原有Linux容器的基礎上進行大膽革新,爲容器設定了一整套標準化的配置方法,將應用及其依賴的運行環境打包成鏡像,真正實現了「構建一次,處處運行」的理念,大大提升了容器的便攜性。
- 易於理解且易用。Docker的英文原意是處理集裝箱的碼頭工人,標誌是鯨魚運送一大堆集裝箱,集裝箱就是容器,生動好記,易於理解。一個開發者能夠在15分鐘以內入門Docker並進行安裝和部署,這是容器使用史上的一次飛躍。由於它的易用性,有更多的人開始關注容器技術,加速了容器標準化的步伐。
- 應用鏡像倉庫。Docker官方構建了一個鏡像倉庫,組織和管理形式相似於GitHub,其上已累積了成千上萬的鏡像。由於Docker的跨平臺適配性,至關於爲用戶提供了一個很是有用的應用商店,全部人均可以自由地下載微服務組件,這爲開發者提供了巨大便利。
1.3 進化:從容器到容器雲
什麼是容器雲?
容器雲以容器爲資源分割和調度的基本單位,封裝整個軟件運行時環境,爲開發者和系統管理員提供用於構建、發佈和運行分佈式應用的平臺。當容器雲專一於資源共享與隔離、容器編排與部署時,它是一種IaaS;當容器雲滲透到應用支撐與運行時環境時,它是一種PaaS。