Docker基本原理概述

2022-07-03 07:21:14 字數 3044 閱讀 6883

docker基本原理概述

docker是乙個用於開發,交付和執行應用程式的開放平台。docker能夠將應用程式與基礎架構分開,從而可以快速交付軟體。借助docker,可以以與管理應用程式相同的方式來管理基礎架構。通過利用docker的快速交付,測試和部署**的方法,可以顯著減少編寫**和在生產環境中執行**之間的延遲。

docker平台

docker提供了在鬆散隔離的環境(稱為容器)中打包和執行應用程式的功能。隔離和安全性可以在給定主機上同時執行多個容器。容器是輕量級的,包含執行該應用程式所需的所有內容,因此無需依賴主機上當前安裝的內容。可以在工作時輕鬆共享容器,並確保與共享的每個人都能以相同的方式獲得相同的容器。

docker提供了工具和平台來管理容器的生命週期:

可以將docker用於什麼?

快速,一致地交付應用程式

docker通過允許開發人員使用提**用程式和服務的本地容器在標準化環境中工作,從而簡化了開發生命週期。容器非常適合進行持續整合和持續交付(ci / cd)工作流。

考慮以下示例方案:

響應式部署和擴充套件

docker的基於容器的平台允許高度可移植的工作負載。docker容器可以在開發人員的本地膝上型電腦上,資料中心內的物理或虛擬機器上,雲提供商上或混合環境中執行。

docker的可移植性和輕量級的特性,可以輕鬆地動態管理工作負載,並根據業務需求指示實時擴充套件或拆除應用程式和服務。

在相同的硬體上執行更多的工作負載

docker輕巧快速。將基於虛擬機器管理程式的虛擬機器提供了一種可行的,具有成本效益的替代方案,可以利用更多的計算能力來實現業務目標。docker非常適合高密度環境以及中小型部署,而需要用更少的資源做更多的事情。

docker架構

docker使用客戶端-伺服器架構。docker客戶端與docker守護程序進行對話,守護程序完成了構建,執行和分發docker容器的繁重工作。docker客戶端和守護程式可以在同一系統上執行,或者可以將docker客戶端連線到遠端docker守護程式。docker客戶端和守護程式在unix套接字或網路介面上使用rest api進行通訊。另乙個docker客戶端是docker compose,可以處理由一組容器組成的應用程式。

docker守護程式

docker守護程式(dockerd)偵聽docker api請求,管理docker物件,例如影象,容器,網路和卷。守護程式還可以與其它守護程式通訊以管理docker服務。

docker客戶端

docker客戶端(docker)是許多docker使用者與docker互動的主要方式。當使用諸如docker run之類的命令時,客戶端會將這些命令傳送到dockerd,以執行這些命令。該docker命令使用docker api。docker客戶端可以與多個守護程式通訊。

docker登錄檔

docker登錄檔儲存docker映像。docker hub是任何人都可以使用的公共登錄檔,並且預設情況下,docker已配置為在docker hub上查詢映像。甚至可以執行自己的私人登錄檔。

使用docker pull或docker run命令時,將從配置的登錄檔中提取所需的影象。使用該docker push命令時,會將映像推送到已配置的登錄檔。

docker物件

使用docker時,正在建立和使用映像,容器,網路,卷,外掛程式和其它物件。本節是其中一些物件的簡要概述。

乙個影象是用於建立乙個docker容器指令的唯讀模板。通常,乙個映像基於另乙個映像,並進行一些其它自定義。例如,可以基於該ubuntu 映像構建映像,但安裝apache web伺服器和應用程式,以及執行該應用程式所需的配置詳細資訊。

可以建立自己的影象,也可以僅使用其它人建立並在登錄檔中發布的影象。為了構建自己的映像,可以使用簡單的語法建立乙個dockerfile,以定義建立映像和執行映像所需的步驟。dockerfile中的每條指令都會在映像中建立乙個層。當更改dockerfile並重建映像時,僅重建那些已更改的層。與其它虛擬化技術相比,這是使映像如此輕巧,小型和快速的部分原因。

貨櫃容器是影象的可執行例項。可以使用docker api或cli建立,啟動,停止,移動或刪除容器。可以將容器連線到乙個或多個網路,將儲存連線到它,甚至根據其當前狀態建立乙個新映像。

預設情況下,容器與其它容器及其主機之間的隔離度相對較高。可以控制容器的網路,儲存或其它底層子系統與其它容器或與主機的隔離程度。

容器由其映像以及在建立或啟動時為其提供的任何配置選項定義。刪除容器後,未儲存在永續性儲存中的狀態更改將消失。

示例docker run命令

以下命令執行乙個ubuntu容器,以互動方式附加到本地命令行會話,然後執行/bin/bash。

$ docker run -i -t ubuntu /bin/bash

當執行此命令時,會發生以下情況(假設使用的是預設登錄檔配置):

如果在ubuntu本地沒有該映像,則docker會將其從已配置的登錄檔中拉出,就像docker pull ubuntu手動執行一樣。

docker會建立乙個新容器,就像docker container create 手動執行命令一樣。

docker將乙個讀寫檔案系統分配給容器,作為其最後一層。允許執行中的容器在其本地檔案系統中建立或修改檔案和目錄。

docker建立了乙個網路介面,將容器連線到預設網路,因為沒有指定任何網路選項。這包括為容器分配ip位址。預設情況下,容器可以使用主機的網路連線連線到外部網路。

docker啟動容器並執行/bin/bash。因為容器是互動式執行的,並且已附加到終端(由於-i和-t標誌),可以在輸出記錄到終端時使用鍵盤提供輸入。

當鍵入exit以終止/bin/bash命令時,容器將停止但不會被刪除。可以重新啟動或刪除它。

底層技術

docker用go程式語言編寫,並利用linux核心的多種功能來交付其功能。docker使用一種稱為的技術namespaces來提供稱為容器的隔離工作區。執行容器時,docker會為該容器建立一組命名空間。

這些命名空間提供了一層隔離。容器的每個方面都在單獨的命名空間中執行,並且對其的訪問僅限於該命名空間。

RTOS基本原理概述

嵌入式實時作業系統英文為 embedreal time operatingsystem 簡稱rtos 與pc 機上的通用的作業系統 windows 或是linux 相比,rtos 精簡,實時性強。不同的 rtos 根據效能特點適應於航天航空 生物醫學 工業控制 消費電子等行業。rtos是一種架構。歷...

mysql的基本原理 Mysql 基本原理

mysql 基本原理 mysql是一種關聯式資料庫管理系統,關聯式資料庫將資料儲存在不同的表中,而不是將所有資料放在乙個大倉庫內,這樣就增加了速度並提高了靈活性 ysql是資料庫登入命令 uroot預設超級使用者登入 p 預設沒密碼 中寫密碼 mysqladmin uroot password 12...

8 2 1 基本原理

乙個舞台動畫物件在包含許多舞台資訊 出現在何處,佔多大面積,處在什麼角度,是否可見 這些資訊分別儲存在動畫物件的屬性中。在 中讀取這些屬性可以了解物件的位置 大小 角度等狀態資訊 修改這些屬性可以改變物件的位置 大小 角度等狀態。如果從資料的角度去理解,動畫就是在固定時間間隔點不斷修改動畫物件某項屬...