自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Docker 用了那么久 了,還不知道它是如何工作的呢?

云計(jì)算 云原生
雖然 Kubernetes 宣布不再直接支持 Docker 了,但是實(shí)際上支持Containerd 就是支持 Docker了,所以默認(rèn) K8s 就是Docker 的編排工具。

Docker 構(gòu)成三大件

Docker的架構(gòu)主要由三個(gè)核心組件構(gòu)成,這是 Docker 三大件。

圖片圖片

Docker Client

這是開發(fā)者與Docker交互的部分。無論你是直接使用 Docker 命令行,還是用 Docker desktop、OrbStack這些 GUI 工具,實(shí)際上都是在使用Docker客戶端。包括使用 Dockerfile 實(shí)際上也是對(duì) Client 命令的包裝。

它負(fù)責(zé)將你輸入的指令傳遞給Docker守護(hù)進(jìn)程(Docker daemon),并顯示出執(zhí)行結(jié)果。

Docker Host

這是Docker運(yùn)行的核心環(huán)境。在Docker主機(jī)上,最關(guān)鍵的部分就是Docker守護(hù)進(jìn)程(Docker daemon)。它負(fù)責(zé)處理 Docker API 的請(qǐng)求,管理各種Docker對(duì)象,包括下面這幾個(gè):

? 鏡像(Images):容器的只讀模板,包含了運(yùn)行應(yīng)用所需的所有依賴和配置。 ? 容器(Containers):鏡像的運(yùn)行實(shí)例,可以被啟動(dòng)、停止、刪除等。 ? 網(wǎng)絡(luò)(Networks):容器間通信的橋梁。 ? 數(shù)據(jù)卷(Volumes):用于數(shù)據(jù)持久化的機(jī)制。

Docker Registry

這是存儲(chǔ)Docker鏡像的地方。Docker Hub是默認(rèn)的公共鏡像倉(cāng)庫,國(guó)內(nèi)也有不少的鏡像站,雖然現(xiàn)在很多不能用了,包括各個(gè)云平臺(tái)一般也有自己的鏡像倉(cāng)庫,很多公司也會(huì)搭建公司內(nèi)部的鏡像倉(cāng)庫。

我記得15年我做 devops 的時(shí)候,公司就搭了鏡像倉(cāng)庫,因?yàn)楫?dāng)時(shí)公司用的那些鏡像都是高度定制化的,而且配置略復(fù)雜,搭建鏡像倉(cāng)庫就很合適。

Docker 如何工作的

好了,了解了 Docker 核心組件后,我們?cè)賮砜纯碊ocker是如何工作的吧。

使用者啟動(dòng)一個(gè)容器一定是從一個(gè)鏡像創(chuàng)建出來的,那就從鏡像的構(gòu)建、鏡像上傳、鏡像拉取直到容器運(yùn)行這幾個(gè)階段來看一下 Docker 的工作過程。

構(gòu)建階段

鏡像的發(fā)布者可以通過 docker save 命令將自己的容器打包成一個(gè)鏡像,但是更好的方式是直接編寫Dockerfile,定義好各種依賴和參數(shù)。

最后使用docker build命令構(gòu)建鏡像,Docker客戶端將指令發(fā)送給Docker守護(hù)進(jìn)程。守護(hù)進(jìn)程解析Dockerfile文件,根據(jù)其指定的參數(shù)和配置,創(chuàng)建一個(gè)符合要求的鏡像。

分發(fā)階段

使用docker push命令,將構(gòu)建好的鏡像上傳到Docker倉(cāng)庫,不管是公共倉(cāng)庫還是內(nèi)部倉(cāng)庫。

之后其他人就可以通過docker pull命令從倉(cāng)庫中獲取這個(gè)鏡像。到這一步大部分人應(yīng)該都很熟悉了,鏡像可能沒打包過,但是用鏡像啟動(dòng)容器應(yīng)該是輕車熟路的。

運(yùn)行階段

使用docker run命令,Docker守護(hù)進(jìn)程會(huì)基于指定的鏡像創(chuàng)建并啟動(dòng)一個(gè)新的容器,如果之前沒有用 docker pull命令拉取過,那會(huì)自動(dòng)拉取。

容器在一個(gè)隔離的環(huán)境中運(yùn)行,擁有自己的文件系統(tǒng)、網(wǎng)絡(luò)和進(jìn)程空間。

Docker的工作原理保證了所有使用這個(gè)鏡像的環(huán)境都是一致的,這樣就不會(huì)出現(xiàn)開發(fā)說:“在我的機(jī)器上是沒問題的呀?在測(cè)試環(huán)境是可以的呀?”這樣的問題了。

通過將應(yīng)用及其依賴打包到一個(gè)標(biāo)準(zhǔn)化的單元(容器)中,Docker確保了應(yīng)用可以在任何支持Docker的環(huán)境中一致地運(yùn)行。

此外,Docker的輕量級(jí)特性使得它可以在同一臺(tái)主機(jī)上同時(shí)運(yùn)行多個(gè)容器,每個(gè)容器都是相互隔離的。這種隔離性和可移植性使得Docker在微服務(wù)架構(gòu)、持續(xù)集成/持續(xù)部署(CI/CD)流程中發(fā)揮著重要作用。

Docker 、Dockerfile、Docker Swarm、K8S 之間的關(guān)系

Docker 和 Dockerfile

Dockerfile是一個(gè)文本文件,包含了一系列指令和參數(shù)。它用于定義如何構(gòu)建Docker鏡像。

當(dāng)執(zhí)行docker build命令時(shí),Docker會(huì)讀取Dockerfile中的指令,并據(jù)此創(chuàng)建一個(gè)Docker鏡像。

可以將Dockerfile理解為鏡像的"配方",而Docker則是"廚師",按照這個(gè)配方烹飪出最終的"菜肴"(鏡像)。

Dockerfile是輸入,Docker鏡像是輸出,而Docker平臺(tái)則是將輸入轉(zhuǎn)化為輸出的工具。

Docker 和 Docker Swarm

Docker Swarm是Docker原生的集群管理和編排工具。

當(dāng)需要的容器變多了,并且經(jīng)常有需要擴(kuò)展容器的需求時(shí),就需要編排工具了。

Docker Swarm則用于管理多個(gè)Docker主機(jī)組成的集群??梢詫⒍鄠€(gè)運(yùn)行Docker的機(jī)器組合成一個(gè)虛擬的Docker主機(jī),讓運(yùn)維人員輕松地在多臺(tái)機(jī)器上部署和擴(kuò)展Docker容器。

它提供了一些基本的編排功能,如服務(wù)發(fā)現(xiàn)、負(fù)載均衡、滾動(dòng)更新等。

可以將Docker Swarm視為Docker的擴(kuò)展,它使得Docker能夠在集群環(huán)境中更好地工作。

Docker 和 K8s

Kubernetes,通常簡(jiǎn)稱為K8s,是一個(gè)更加強(qiáng)大和復(fù)雜的容器編排平臺(tái)。

Kubernetes最初是為Docker容器設(shè)計(jì)的,但它現(xiàn)在支持多種容器運(yùn)行時(shí),包括Docker和Containerd。

雖然 Kubernetes 宣布不再直接支持 Docker 了,但是實(shí)際上支持Containerd 就是支持 Docker了,所以默認(rèn) K8s 就是Docker 的編排工具。

Kubernetes提供了比Docker Swarm更豐富的功能,包括自動(dòng)擴(kuò)縮容、自我修復(fù)、批處理、水平擴(kuò)展等。

責(zé)任編輯:武曉燕 來源: 古時(shí)的風(fēng)箏
相關(guān)推薦

2019-12-24 09:49:02

微軟英語瀏覽器

2022-08-11 17:14:37

Java

2022-12-09 09:46:55

插件Lombok

2016-07-22 17:55:07

云計(jì)算

2023-01-02 10:08:42

StampedLocAQS框架

2023-03-03 07:40:52

MySQLSQL命令

2022-07-17 06:53:24

微服務(wù)架構(gòu)

2022-09-19 18:32:22

函數(shù)編程語言

2018-05-20 11:01:47

Siri語音助手手機(jī)

2010-03-12 09:15:28

Firefox新功能

2022-06-27 07:32:00

JavaArrayList語法糖

2018-09-02 15:43:56

Python代碼編程語言

2020-12-14 07:51:16

JS 技巧虛值

2022-05-05 12:02:45

SCSS函數(shù)開發(fā)

2021-04-15 12:30:18

ServletSpringMVC 版本

2014-12-01 09:41:25

2021-03-18 14:02:56

iOS蘋果細(xì)節(jié)

2021-10-22 09:41:26

橋接模式設(shè)計(jì)

2022-04-15 07:51:12

off-heap堆外內(nèi)存JVM

2022-05-20 08:02:07

Mono-repoGit策略
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)