Docker 的認識與入門

對于開發(fā)者而言為什么要學(xué)習(xí) Docker ?

今天開發(fā)應(yīng)用程序所需要的不僅僅是編寫代碼。在每個生命周期階段,工具之間的多種語言,框架,體系結(jié)構(gòu)以及不連續(xù)的接口都會帶來極大的復(fù)雜性。Docker簡化并加速了您的工作流程,同時使開發(fā)人員可以自由選擇每個項目的工具,應(yīng)用程序堆棧和部署環(huán)境進行創(chuàng)新。

作為一個開源的應(yīng)用容器引擎,Docker 能夠讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的 Linux 機器上,也可以實現(xiàn)虛擬化,方便快捷。

那么在學(xué)習(xí) Docker之前,我們先來了解一下容器的概念。

容器

容器是打包代碼及其所有依賴項的軟件的標準單元,因此應(yīng)用程序可從一個計算環(huán)境快速可靠地運行到另一個計算環(huán)境。Docker容器鏡像是輕巧的,獨立的,可執(zhí)行的軟件軟件包,其中包括運行應(yīng)用程序所需的一切:代碼,運行時,系統(tǒng)工具,系統(tǒng)庫和設(shè)置。

容器鏡像在運行時成為容器,對于Docker容器而言,它們成為鏡像當(dāng)它們在Docker Engine上運行時成為容器。不論基礎(chǔ)架構(gòu)如何,容器化軟件都可用于基于Linux和Windows的應(yīng)用程序,始終運行相同。容器將軟件與其環(huán)境隔離開來,并確保盡管開發(fā)和上線之間存在差異,但軟件仍可以均勻運行。

Docker的定義

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

Docker 的優(yōu)點

Docker 是一個用于開發(fā),交付和運行應(yīng)用程序的開放平臺。Docker 使您能夠?qū)?yīng)用程序與基礎(chǔ)架構(gòu)分開,從而可以快速交付軟件。借助 Docker,您可以與管理應(yīng)用程序相同的方式來管理基礎(chǔ)架構(gòu)。通過利用 Docker 的方法來快速交付,測試和部署代碼,您可以大大減少編寫代碼和在生產(chǎn)環(huán)境中運行代碼之間的延遲。

Docker容器的分布場景

Docker容器無處不在:Linux,Windows,數(shù)據(jù)中心,云,無服務(wù)器等。

Docker

<figcaption style="margin-top: 5px; text-align: center; display: block; font-size: 13px; color: #2b2b2b;">Docker</figcaption>

Docker 與虛擬機的區(qū)別

Docker容器與虛擬機類似,但原理上,容器是將操作系統(tǒng)層虛擬化,虛擬機則是虛擬化硬件,因此容器更具有便攜性、高效地利用服務(wù)器。 容器更多的用于表示軟件的一個標準化單元。由于容器的標準化,因此它可以無視基礎(chǔ)設(shè)施的差異,部署到任何一個地方。另外,Docker也為容器提供更強的業(yè)界的隔離兼容。

容器:

容器是應(yīng)用程序?qū)拥某橄?,將代碼和依賴項打包在一起。多個容器可以在同一臺計算機上運行,并與其他容器共享OS內(nèi)核,每個容器在用戶空間中作為隔離的進程運行。容器占用的空間少于虛擬機(容器映像的大小通常為幾十MB),可以處理更多的應(yīng)用程序,并且需要的虛擬機和操作系統(tǒng)更少。

虛擬機:

虛擬機是將一臺服務(wù)器轉(zhuǎn)變?yōu)槎嗯_服務(wù)器的物理硬件的抽象。系統(tǒng)管理程序允許多個虛擬機在單臺計算機上運行。每個虛擬機包含操作系統(tǒng),應(yīng)用程序,必要的二進制文件和庫的完整副本-占用數(shù)十GB。 虛擬機也可能啟動緩慢。

參考資料

  • Docker引擎(Docker Engine)是一個服務(wù)端-客戶端結(jié)構(gòu)的應(yīng)用,主要包括Docker守護進程、Docker Engine API、Docker客戶端。

  • Docker守護進程(Docker daemons),也叫 dockerd ,是一個持久化的進程,用戶管理容器。守護進程會監(jiān)聽Docker Engine API 的請求。

  • Docker Engine API 是用于與Docker守護進程交互用的的API。它是一個RESTful API,因此它不僅可以被Docker客戶端調(diào)用,也可以被wgetcurl等命令調(diào)用。

  • Docker客戶端,也叫docker,是大部分用戶與Docker交互的主要方式。用戶通過客戶端將命令發(fā)送給守護進程。命令會遵循Docker Engine API。

  • Docker注冊中心(Docker registry)是用于存儲Docker的鏡像。Docker Hub 是一個公共的注冊中心,任何人都可以使用,默認配置下,Docker將會在這里尋找鏡像。

  • 容器(Containers)是鏡像的可運行的實例。容器可通過API或CLI(命令行)進行操控。

  • 鏡像(Images)是一個只讀模板,用于指示創(chuàng)建容器。鏡像分層(layers)構(gòu)建的,而定義這些層次的文件叫「Dockerfile」

  • 服務(wù)(Services)允許用戶跨越不同的Docker守護進程(Docker daemons)的情況下增加容器,并將這些容器分為管理者(managers)和工作者(workers),讓他們?yōu)閟warm共同工作。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容