(一)零基礎小白都能懂的超全Docker入門教程之開篇

相信很多人和我開始時一樣,聽過Docker,聽過Kubernetes,聽過容器也聽過集羣,貌似很多高大上的技術都耳熟能詳,但自己其實卻並不瞭解,甚至不知道他們是什麼?能幹什麼?

最初,我以爲Docker以及k8s等技術只能用在大數據以及雲等的場景,甚至學習上也需要專門的環境,但是,我發現我錯了,而且錯的很徹底,不知道你是否也這麼認爲過,覺得這些技術在平時的開發中根本用不到。如果是這樣的,那我現在就告訴你,其實並不是這樣的,下面就跟我一起來了解一下Docker吧。

Docker的發展

Docker是由美國舊金山一家名叫“dotCloud”---主要提供基於PaaS的雲計算技術服務的公司研發的,Docker是該公司將自己的容器技術進行了簡化和標準化之後纔得到的名稱。

2013年3月,dotCloud公司的創始人之一,Docker之父,28歲的Solomon Hykes正式決定,將Docker項目開源。

之後的Docker,成爲了行業里人氣最火爆的開源技術,沒有之一。更是得到像Google、微軟、Amazon這樣的巨頭的全力支持。

那麼Docker和容器技術爲什麼會這麼火爆?說白了,就是因爲它“輕”。

Docker是什麼

Dockers是有能力打包應用程序及其虛擬容器,可以在任何Linux服務器上運行的依賴性工具,應用程序在任何地方都可以運行,無論是公有云、私有云、單機等這有助於實現靈活性和便攜性,。

Docker 是一個開放源代碼軟件,是一個開放平臺,用於開發應用、交付(shipping)應用、運行應用。 Docker允許用戶將基礎設施(Infrastructure)中的應用單獨分割出來,形成更小的顆粒(容器),從而提高交付軟件地速度。

Docker容器 與虛擬機類似,但原理上,容器是將操作系統層虛擬化,虛擬機則是虛擬化硬件,因此容器更具有便攜性、高效地利用服務器。 容器更多的用於表示 軟件的一個標準化單元。由於容器的標準化,因此它可以無視基礎設施(Infrastructure)的差異,部署到任何一個地方。

Docker的優點

  • 標準化應用發佈,docker容器包含了運行環境和可執行程序,可以跨平臺和主機使用;

  • 節約時間,快速部署和啓動,一般是秒級;

  • 方便構建基於SOA架構或微服務架構的系統,通過服務編排,更好的松耦合;

  • 節約成本,docker容器需要的磁盤空間可以減少到MB級;

  • 方便持續集成,通過與代碼進行關聯使持續集成非常方便;

  • 可以作爲集羣系統的輕量主機或節點。

Kubernetes

                                      

雖然Docker容器技術被炒得熱火朝天,但是其自身也有很多的限制,比如想要將Docker應用於具體的業務實現,容器的編排、管理和調度等都是比較困難的。於是,人們迫切需要一套管理系統,對Docker及容器進行更高級更靈活的管理。這時,K8S應運而生。K8S,全稱是kubernetes,是基於容器的集羣管理平臺。

而且,k8s自身有很多優點可以完美的解決硬件對應用的限制。

  • 易部署:K8S部署任何應用都是小菜一碟。只要應用可以打包進容器,K8S就一定能啓動它。K8S都可以在任何環境中安全的啓動不管什麼語言什麼框架寫的應用,物 理服務器、虛擬機、雲環境。
  • 易遷移:Kubernetes 完全兼容各種雲服務提供商,可以滿足切換供應商的需求,比如從 Google到 AWS。
  • 高效的資源利用:K8S如果發現有節點工作不飽和,便會重新分配 pod,幫助我們節省開銷,高效的利用內存、處理器等資源。如果一個節點宕機了,K8S會自動重新創建之前運行在此節點上的 pod,在其他節點上運行。
  • 超強的自動縮放能力:網絡、負載均衡、複製等特性,對於 Kubernetes 都是開箱即用的。pod 是無狀態運行的,任何時候有 pod 宕了,立馬會有其他 pod 接替它的工作,用戶完全感覺不到。如果用戶量突然暴增,現有的 pod 規模不足了,那麼會自動創建出一批新的 pod,以適應當前的需求。反之亦然,當負載降下來的時候,K8S也會自動縮減 pod 的數量。
  • 易操作:只需 寫個簡單的CI 服務腳本然後運行它,就會使用你的代碼創建一個新的 pod,並部署到 Kubernetes 集羣裏面。應用打包在容器中使其可以安全的運行在任何地方,例如你的 PC、一個雲服務器,使得測試極其簡單。

 

Docker基礎架構

Docker其實有2個含義:一是指整個Docker項目,一是指Docker引擎。

Docker引擎(Docker Engine)

Docker Engine是一個服務端-客戶端結構的應用,主要有這些部分:Docker守護進程、Docker Engine AP、Docker客戶端。

  • Docker守護進程(Docker daemons),也叫 dockerd ,是一個持久化的進程,用戶管理容器。守護進程會監聽Docker Engine API的請求。
  • Docker Engine API是用於與Docker守護進程交互用的的API。它是一個RESTful API,因此它不僅可以被Docker客戶端調用,也可以被wget 和 curl等命令調用。
  • Docker客戶端,也叫docker,是大部分用戶與Docker交互的主要方式。用戶通過客戶端將命令發送給守護進程。命令會遵循Docker Engine API。

Docker註冊中心(Docker registry)

Docker registry是用於存儲Docker的鏡像。Docker Hub 是一個公共的註冊中心,任何人都可以使用,默認配置下,Docker將會在這裏尋找鏡像。我們在下一節安裝Docker時下載軟件時會從這裏註冊賬號並拉取(pull)Docker鏡像。

另外,用戶可以自行構建私有註冊中心。

Docker對象

Docker的對象是指Images、Containers、Networks、Volumes、Plugins等等。

  • 容器(Containers)是鏡像的可運行的實例。容器可通過API或CLI(命令行)進行操控。
  • 鏡像(Images)是一個只讀模板,用於指示創建容器。 鏡像分層(layers)構建的,而定義這些層次的文件叫Dockerfile
  • 服務(Services)允許用戶跨越不同的Docker守護進程(Docker daemons)的情況下增加容器,並將這些容器分爲管理者(managers)和工作者(workers),讓他們爲swarm共同工作。

除了Docker基礎架構之外,還有Docker的擴展架構,其中包括Docker Compose、Swarm Mode等

以及Docker的兩種文件格式,Dockerfile和Compose file。Dockerfile定義了單個容器的內容和啓動時候的行爲。Compose file定義了一個多容器應用。

還有Docker的網絡模式及插件等,這些除基礎架構之外的東西,本機就暫時不探討了,一是本來本節就是爲了瞭解Docker,沒必要把全部的大而全的東西都完全搞懂,二是,怕給零基礎的同學造成壓力;三是本人文筆有限,怕你們讀的枯燥,哈哈,因此,我宣佈本節內容到此結束啦。。。。。。。。下一節,我們來學習Docker Desktop及k8s的安裝。


更多優質文章,請搜索公衆號 攻城獅客棧,或掃描下方二維碼

讓我做您手機裏的移動知識庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章