【山外筆記-雲原生】《Docker+Kubernetes應用開發與快速上雲》讀書筆記-2020.04.25(六)


書名:Docker+Kubernetes應用開發與快速上雲

作者:李文強

出版社:機械工業出版社

出版時間:2020-01

ISBN:9787111643012


[山外筆記-雲原生]《Docker_Kubernetes應用開發與快速上雲》讀書筆記01.pdf

一、山外筆記-前言

1、雲原生下的DevOps的解決方案:以Docker為代表的容器技術作為基礎保障、以Kubernetes(簡稱k8s)為代表的容器編排技術作為支撐的解決方案。

2、雲原生的實現:以Docker為代表的容器技術+以K8s為代表的容器編排技術+微服務架構

3、本書內容介紹(共11章)

  • 第01章:主要介紹Docker以及容器技術的發展簡史。

  • 第02章:主要介紹Docker的市場趨勢和主要應用場景。

  • 第03章:主要講解各個環境下的Docker安裝過程。

  • 第04章:主要結合實踐示例講解Docker的一些鏡像操作命令和容器操作命令。

  • 第05章:主要圍繞Docker應用開發的持續工作流程進行講解。

  • 第06章:主要講解如何使用主流的編程語言進行Docker應用開發。

  • 第07章:主要講述主流的數據庫容器化並且側重講解容器化之后如何持久保存數據。

  • 第08章:主要講述Kubernetes的主體架構、核心概念、集群搭建和故障處理。

  • 第09章:主要講述k8s應用部署流程及相關功能。

  • 第10章:主要講述Docker+k8s的組合上雲的問題。

  • 第11章,主要講述容器化之后的DevOps實踐。


二、山外筆記-第1章:走進Docker

本章主要包含以下內容:

  • Docker技術概述;

  • 容器技術的發展歷史;

  • Docker和虛擬機的區別;

  • Docker的三個基本概念(為后續進一步講解Docker做鋪墊);

  • Docker的兩個版本。

2.1 什么是Docker

1、Docker是一個開源的應用容器引擎,可以輕松地為任何應用創建一個輕量級、可移植、自給自足的容器。

2、Docker平台就是一個軟件集裝箱化平台,可以構建應用程序,將其依賴關系一起打包到一個容器中,然后可以批量地部署到不同的環境,非常易於裝載、復制、移除,適合彈性軟件架構。

3、軟件容器充當軟件部署的標准單元,可以包含不同的代碼和依賴項。

4、和虛擬機一樣,容器技術也是一種資源隔離的虛擬化技術。

2.2 容器簡史

1、UNIX chroot(1979):起始階段

容器概念始於UNIX chroot,chroot將一個進程及其子進程的根目錄改變到文件系統中的一個新位置,使該進程只能訪問到新的位置,從而達到進程隔離的目的。

2、Cgroups(2007):Control Groups

谷歌實現了Control Groups(Cgroups),而后被加入到Linux內核中,能夠限制和隔離一系列進程的資源使用(CPU、內存、磁盤I/O、網絡等),為后期容器的資源配額提供了技術保障。

3、LXC(2008):Linux Containers

2008年基於Cgroups和Linux Namespaces推出了第一個最為完善的Linux容器LXC,其功能通過Cgroups和Linux Namespaces實現,是第一套完整的Linux容器管理實現方案。

4、Docker(2013)推出

(1)Docker的理念是“一次構建,隨處運行”。

(2)Docker在起步階段使用LXC,而后利用自己的libcontainer庫將其替換下來。

(3)Docker引入了一整套與容器管理相關的生態系統,包括一套高效的分層式容器鏡像模型、一套全局及本地容器注冊表、一個精簡化REST API以及一套命令行界面等。

5、Rocket(2014)推出

(1)2014年CoreOS推出了一個類似於Docker的容器Rocket。

(2)CoreOS是一個更加輕量級的Linux操作系統,Rocket在安全性上比Docker更嚴格。

6、Docker支持Windows系統

2016年微軟在Windows上提供了對容器的支持,Docker可以以原生方式運行在Windows上,而不需要使用Linux虛擬機。

2.3 Docker和虛擬機

1、Docker容器

(1)容器是一個應用層抽象,用於將代碼和依賴資源打包在一起。

(2)多個容器可以在同一台機器上運行,共享操作系統內核,但各自作為獨立的進程在用戶空間中運行。

(3)與虛擬機相比,容器占用的空間較少(容器鏡像大小通常只有幾十兆),瞬間就能完成啟動。

2、虛擬機VM

(1)虛擬機(VM)是一個物理硬件層抽象,用於將一台服務器變成多台服務器。

(2)管理程序允許多個VM在一台機器上運行。

(3)每個VM都包含一整套操作系統、一個或多個應用、必要的二進制文件和庫資源。

(4)虛擬機占用大量空間,啟動也十分緩慢。

3、容器和虛擬機的比較

(1)啟動速度:容器的啟動速度是秒級,即幾秒內即可啟動;虛擬機的啟動速度需要幾分鍾到十幾分鍾。

(2)存儲空間占用:容器基本鏡像的大小在幾百MB以內;虛擬機的鏡像大小在幾十GB到上百GB。

(3)性能:容器的性能接近原生,基本無額外消耗;虛擬機的性能弱於原生,且占用較多的資源。

(4)系統支持量:一台普通的服務器可以輕松支持上千個容器,但最多只能支持幾十個虛擬機。

(5)安全隔離性:容器的安全隔離性明顯弱於虛擬機。

4、鏡像的主要目標是使環境(依賴項)在不同的部署中保持不變。即借助容器鏡像,可打包應用或服務並采用可靠且可重現的方式對其進行部署。

2.4 Docker的三個基本概念

1、鏡像(Image):一個特殊的文件系統

(1)操作系統分為內核和用戶空間,Linux內核啟動后,會掛載root文件系統為其提供用戶空間支持。

Docker鏡像是一個特殊的root文件系統,提供了容器運行時所需的程序、庫、資源、配置等文件,和為運行時准備的配置參數(如匿名卷、環境變量、用戶等)。

(2)鏡像不包含任何動態數據,其內容在構建之后也不會被改變,可以使用docker image ls命令來列出本機的鏡像。

(3)Docker利用Union FS的技術,設計為分層存儲的架構。

  • 鏡像實際是由多層文件系統聯合組成的。

  • 鏡像構建時會一層層構建,前一層是后一層的基礎。

  • 每一層構建完就不會再發生改變,后一層上的任何改變只發生在自己這一層。

  • 每一層盡量只包含該層需要添加的東西,任何額外的東西應該在該層構建結束前清理掉。

  • 分層存儲使鏡像的復用、定制更為容易,可用已構建好的鏡像作為基礎層,再添加新的層來定制自己所需的鏡像。

2、容器(Container):鏡像運行時的實體

(1)鏡像和容器的關系就像是面向對象程序設計中的類和實例一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。

(2)容器可以被創建、啟動、停止、刪除、暫停等,可以使用命令docker ps來查看正在運行的容器列表。

(3)容器的實質是進程,容器進程運行於屬於自己的獨立的命名空間中。

(4)容器和鏡像一樣,也是分層存儲。

  • 容器存儲層的生存周期和容器一樣,容器消亡時,容器存儲層也隨之消亡。

  • 任何保存於容器存儲層的信息都會隨容器刪除而丟失。

  • 容器不應該向其存儲層內寫入任何數據,容器存儲層要保持無狀態化。

  • 容器所有文件的寫入操作,直接跳過容器存儲層,直接對數據卷(Volume)或者綁定宿主目錄發生讀寫。

  • 數據卷的生存周期獨立於容器,容器消亡,數據卷不會消亡,數據也不會丟失。

(5)容器的優點:隔離性、可移植性、靈活性、可伸縮性和可控性,最重要的優點是可在開發和運營之間提供隔離。

3、倉庫(Repository):集中存放鏡像文件的地方
(1)鏡像倉庫是Docker用來集中存放鏡像文件的地方,提供集中的存儲、分發鏡像服務,類似於常用的代碼倉庫。

  • 一個Docker Registry中可以包含多個倉庫,每個倉庫可以包含多個標簽(Tag),每個標簽對應一個鏡像。

  • 一個倉庫通常會包含同一個軟件不同版本的鏡像,而標簽就常用於對應該軟件的各個版本。

  • 鏡像倉庫通過“<倉庫名>:<標簽>”的格式來指定鏡像的版本,如果不給出標簽,就以latest作為默認標簽。

(2)Docker Registry

  • Docker Registry公開服務是開放給用戶使用、允許用戶管理鏡像的Registry服務。

  • Docker Registry公開服務允許用戶免費上傳、下載公開的鏡像,並可能提供收費服務供用戶管理私有鏡像。

  • 用戶可在本地搭建私有Docker Registry,Docker官方提供了Docker Registry鏡像,可以直接作為私有Registry服務。

(3)Docker Hub

  • Docker Hub是Docker官方維護的一個鏡像倉庫,也是最常使用的Registry公開服務、默認的Registry服務。

  • Docker Hub擁有大量的高質量的官方鏡像,網址為https://hub.docker.com/

  • 可以在Docker Hub上面免費托管自己的私人鏡像。

2.5 Docker的版本

1、社區版(Docker Community Edition, CE),適合個人開發者和小型團隊,可以免費使用。

2、企業版(Docker Enterprise Edition, EE),專為企業開發和IT團隊設計,需要購買,強調安全。

版權聲明:本文是對《Docker_Kubernetes應用開發與快速上雲》一書的個人學習筆記,只做學習和交流使用,不涉及商業用途,版權歸原作者所有。如果本文發布的內容侵犯到相關的權益,請及時聯系本人進行刪除!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM