手机看片精品高清国产日韩,色先锋资源综合网,国产哺乳奶水91在线播放,乱伦小说亚洲色图欧洲电影

幫助中心 >  行業(yè)資訊 >  運(yùn)維 >  什么是docker?這篇文章用通俗的語(yǔ)言告訴你

什么是docker?這篇文章用通俗的語(yǔ)言告訴你

2025-04-24 17:27:09 1014

隨著家庭 NAS 的慢慢普及,越來(lái)越多的人擁有了自己的 NAS,就拿老宋來(lái)說(shuō),因?yàn)槲夜ぷ髦芯徒佑|一些服務(wù)器、數(shù)據(jù)庫(kù)、docker 等等的東西,雖然不是說(shuō)掌握,但是起碼了解這些個(gè)東西,但是要知道不是所有的人都知道這些名詞后面的含義,服務(wù)器這個(gè)相對(duì)好說(shuō),就是性能和穩(wěn)定性更高的電腦主機(jī),數(shù)據(jù)庫(kù)就想象成功能更加強(qiáng)大的 excel 表格,那么什么是 docker 呢,今天老宋就來(lái)和小伙伴們一起學(xué)習(xí)下docker,想通俗理解請(qǐng)直接移步第四、五部分。

 

一、docker 基本架構(gòu)示意

 1.png

 

二、名詞解釋

Docker 是一個(gè)用于開發(fā)、部署和運(yùn)行應(yīng)用程序的開源平臺(tái),下面是 Docker 中一些常見名詞的解釋:

 

1. Docker 引擎(Docker Engine)

Docker 引擎是 Docker 平臺(tái)的核心組件,它是一個(gè)客戶端 - 服務(wù)器應(yīng)用程序,由守護(hù)進(jìn)程(dockerd)、REST API 服務(wù)器和命令行界面(CLI)組成。守護(hù)進(jìn)程負(fù)責(zé)管理容器、鏡像等資源,REST API 服務(wù)器允許其他程序與守護(hù)進(jìn)程進(jìn)行交互,而 CLI 則提供了用戶與 Docker 引擎交互的命令行工具。

 

2. 鏡像(Image)

Docker 鏡像是一個(gè)只讀的模板,它包含了運(yùn)行應(yīng)用程序所需的所有文件系統(tǒng)、代碼、運(yùn)行時(shí)環(huán)境、庫(kù)和配置等。可以將鏡像看作是應(yīng)用程序的快照,它可以用來(lái)創(chuàng)建 Docker 容器。鏡像可以從 Docker Hub 等鏡像倉(cāng)庫(kù)中下載,也可以使用 Dockerfile 自行構(gòu)建。

 

3. 容器(Container)

容器是鏡像的一個(gè)運(yùn)行實(shí)例。當(dāng)你啟動(dòng)一個(gè)鏡像時(shí),就會(huì)創(chuàng)建一個(gè)容器。容器是一個(gè)獨(dú)立的、隔離的環(huán)境,它可以在任何支持 Docker 的系統(tǒng)上運(yùn)行,并且具有自己的文件系統(tǒng)、進(jìn)程空間和網(wǎng)絡(luò)配置等。容器之間相互隔離,不會(huì)相互影響,這使得應(yīng)用程序的部署和管理更加方便和安全。

 

4. Dockerfile

Dockerfile 是一個(gè)文本文件,它包含了一系列的指令和參數(shù),用于描述如何構(gòu)建 Docker 鏡像。通過(guò)編寫 Dockerfile,你可以定義鏡像的基礎(chǔ)操作系統(tǒng)、安裝軟件包、復(fù)制文件、設(shè)置環(huán)境變量等操作。使用 docker build 命令可以根據(jù) Dockerfile 構(gòu)建出一個(gè)新的鏡像。

 

5. 倉(cāng)庫(kù)(Repository)

Docker 倉(cāng)庫(kù)是用于存儲(chǔ)和分發(fā) Docker 鏡像的地方。類似于代碼倉(cāng)庫(kù),鏡像倉(cāng)庫(kù)可以包含多個(gè)鏡像,并且可以對(duì)鏡像進(jìn)行版本管理。Docker Hub 是 Docker 官方提供的公共鏡像倉(cāng)庫(kù),你可以在上面找到各種類型的鏡像。此外,你也可以搭建自己的私有鏡像倉(cāng)庫(kù),用于存儲(chǔ)和管理公司或團(tuán)隊(duì)內(nèi)部的鏡像。

 

6. 標(biāo)簽(Tag)

標(biāo)簽是用于標(biāo)識(shí)鏡像版本的一種方式。在 Docker 中,一個(gè)鏡像可以有多個(gè)標(biāo)簽,通過(guò)標(biāo)簽可以方便地區(qū)分不同版本的鏡像。例如,nginx:1.23.4 中的 1.23.4 就是一個(gè)標(biāo)簽,它表示這是 Nginx 鏡像的 1.23.4 版本。

 

7. 卷(Volume)

卷是 Docker 中用于持久化數(shù)據(jù)的一種機(jī)制。由于容器是臨時(shí)的,當(dāng)容器被刪除時(shí),容器內(nèi)的數(shù)據(jù)也會(huì)被刪除。而卷可以將容器內(nèi)的數(shù)據(jù)存儲(chǔ)在宿主機(jī)上,這樣即使容器被刪除,數(shù)據(jù)也不會(huì)丟失。卷還可以在多個(gè)容器之間共享,方便數(shù)據(jù)的共享和管理。

 

8. 網(wǎng)絡(luò)(Network)

Docker 網(wǎng)絡(luò)用于實(shí)現(xiàn)容器之間以及容器與外部世界之間的通信。Docker 提供了多種網(wǎng)絡(luò)驅(qū)動(dòng),如橋接網(wǎng)絡(luò)、主機(jī)網(wǎng)絡(luò)、覆蓋網(wǎng)絡(luò)等。通過(guò)網(wǎng)絡(luò),容器可以相互訪問(wèn),也可以訪問(wèn)外部網(wǎng)絡(luò)資源。例如,你可以將一個(gè) Web 應(yīng)用容器和一個(gè)數(shù)據(jù)庫(kù)容器連接到同一個(gè)網(wǎng)絡(luò)中,使它們可以相互通信。

 

三、基本原理 

 

Docker 核心解決的問(wèn)題是利用其自研的 libcontainer 來(lái)實(shí)現(xiàn)類似虛擬機(jī)(VM)的功能,從而利用盡可能少的硬件資源給用戶提供盡可能好的服務(wù)。與 VM 不同, libcontainer 并不是一套硬件虛擬化方法,而是操作系統(tǒng)級(jí)的虛擬化。這理解起來(lái)可能并不像 VM 那樣直觀,所以可以從 Docker 要解決的問(wèn)題出發(fā),看看它是怎么滿足用戶虛擬化需求的。

 

用戶需要考慮虛擬化方法,尤其是硬件虛擬化方法,需要借助其解決的問(wèn)題主要是以下 4 個(gè):

 

隔離性

每個(gè)用戶實(shí)例之間相互隔離, 互不影響。 硬件虛擬化方法的方案是 VM;libcontainer 的方案是容器,具體而言是 namespace。其中的 pid, net, ipc, mnt, uts 等將容器的進(jìn)程, 網(wǎng)絡(luò), 消息, 文件系統(tǒng)和主機(jī)隔離開。

 

可配額/可度量

每個(gè)用戶實(shí)例可以按需提供其計(jì)算資源,所使用的資源可以被計(jì)量。硬件虛擬化方法因?yàn)樘摂M了 CPU 和內(nèi)存,可以方便實(shí)現(xiàn);libcontainer 則主要是利用 cgroups 來(lái)控制資源。cgroups 實(shí)現(xiàn)了對(duì)資源的配額和度量,提供了類似文件的接口。在 /cgroup 目錄下新建一個(gè)文件夾即可新建一個(gè) group,在此文件夾中新建 task 文件,并將 pid 寫入該文件,即可實(shí)現(xiàn)對(duì)該進(jìn)程的資源控制。

 

移動(dòng)性

用戶的實(shí)例可以很方便地復(fù)制、移動(dòng)和重建。硬件虛擬化方法通過(guò) snapshot 和 image 來(lái)實(shí)現(xiàn);Docker 主要通過(guò) AUFS 實(shí)現(xiàn)。AUFS (AnotherUnionFS) 是一種聯(lián)合文件系統(tǒng), 就是支持將不同目錄掛載到同一個(gè)虛擬文件系統(tǒng)下的文件系統(tǒng)。它具有節(jié)省存儲(chǔ)空間、快速部署、節(jié)省內(nèi)存、升級(jí)方便、允許在不更改 base-image 的同時(shí)修改其目錄中的文件的特點(diǎn)。

 

安全性

這個(gè)討論范圍較大,這里強(qiáng)調(diào)是 host 主機(jī)的角度盡量保護(hù)容器。硬件虛擬化的方法因?yàn)樘摂M化的水平比較高,用戶進(jìn)程都是在 KVM 等虛擬機(jī)中運(yùn)行的;然而對(duì)于 libcontainer, 其中運(yùn)行的進(jìn)程應(yīng)當(dāng)是事先靜態(tài)編譯完成的。用戶提供的參數(shù)也是通過(guò) exec 系統(tǒng)調(diào)用提供給用戶進(jìn)程。通常情況下容器中也沒(méi)有長(zhǎng)進(jìn)程存在。

 

四、通俗解釋 

上面說(shuō)的那些是不是有點(diǎn)頭皮發(fā)麻了,別擔(dān)心,下面老宋用通俗的話解釋下 Docker 里的常見名詞:

 

1. Docker 引擎

可以把 Docker 引擎想象成一個(gè)大工廠的總調(diào)度室。這里有一群工作人員(守護(hù)進(jìn)程)負(fù)責(zé)安排各種生產(chǎn)任務(wù),比如組裝產(chǎn)品(創(chuàng)建容器)、存儲(chǔ)原料(管理鏡像)。同時(shí),有一套通信系統(tǒng)(REST API 服務(wù)器)讓其他部門能和調(diào)度室溝通,下達(dá)生產(chǎn)指令。而工人們手里的操作手冊(cè)(命令行界面),能讓他們方便地按照要求完成工作。

 

2. 鏡像

鏡像就像是制作電腦主機(jī)的配件。這些個(gè)配件包含了制作電腦主機(jī)所需的所有信息,像主板、CPU、內(nèi)存等配件(文件系統(tǒng)、代碼、運(yùn)行環(huán)境等)的型號(hào)和數(shù)量,以及組裝步驟(配置)。有了這些配件,就能做出很多一樣的主機(jī)(容器)。

 

3. 容器

容器是用配件(鏡像)組裝出來(lái)的主機(jī)。每個(gè)主機(jī)都是獨(dú)立的個(gè)體,有自己的序列號(hào)、配置(獨(dú)立的文件系統(tǒng)、進(jìn)程空間和網(wǎng)絡(luò)配置)。即使有一個(gè)主機(jī)壞了,也不會(huì)影響其他主機(jī)。

 

4. Dockerfile

Dockerfile 好比是一份組裝主機(jī)的操作說(shuō)明書。它清楚地寫著要準(zhǔn)備哪些配件、用什么工具、按照什么順序來(lái)組裝。只要照著這份說(shuō)明書(使用 docker build 命令),就能準(zhǔn)備好所有的配件(鏡像)。

 

5. 倉(cāng)庫(kù)

倉(cāng)庫(kù)就像一個(gè)大倉(cāng)庫(kù),專門用來(lái)存放各種配件(鏡像)。Docker Hub 是一個(gè)公共的大倉(cāng)庫(kù),大家都能去里面挑選自己需要的配件。而公司或團(tuán)隊(duì)也可以建一個(gè)自己的小倉(cāng)庫(kù)(私有鏡像倉(cāng)庫(kù)),把自己獨(dú)立開發(fā)的配置存起來(lái)。

 

6. 標(biāo)簽

標(biāo)簽就像是貼在配件上的紙條,上面寫著這個(gè)配件是用來(lái)組裝哪種主機(jī)的,以及可以組裝成那個(gè)版本的主機(jī)。比如一個(gè)內(nèi)存條上寫著“3200 DDR4 16GB 序列號(hào)***”,這就說(shuō)明這個(gè)內(nèi)存條只能用于支持 DDR4 的主板。

 

7. 卷

卷可以看作是主機(jī)的配件收納箱。因?yàn)橹鳈C(jī)(容器)可能會(huì)壞掉,但里面的 CPU、內(nèi)存、主板等重要配件(數(shù)據(jù))可以放在收納箱里保存起來(lái)。這樣即使主機(jī)沒(méi)了,配件還在,下次還能接著用。而且這個(gè)收納箱里的配件還能在不同的主機(jī)(容器)之間共享。

 

8. 網(wǎng)絡(luò)

網(wǎng)絡(luò)就像是主機(jī)之間的網(wǎng)線。通過(guò)網(wǎng)線,主機(jī)(容器)之間可以互相送蛋糕(傳輸數(shù)據(jù)),也能和外面的世界(外部網(wǎng)絡(luò))做生意。不同的道路和通信方式(網(wǎng)絡(luò)驅(qū)動(dòng))適用于不同的情況。

 

五、總結(jié) 

如果你讀到這里,那么恭喜小伙伴,你應(yīng)該對(duì)docker是什么有個(gè)概念了,其實(shí)和windows操作系統(tǒng)相比,docker可以理解成把某個(gè)應(yīng)用程序封裝成一個(gè)鏡像,但是這個(gè)應(yīng)用程序獨(dú)立于這個(gè)操作系統(tǒng)(獨(dú)立于操作系統(tǒng)運(yùn)行、獨(dú)立于操作系統(tǒng)使用的網(wǎng)絡(luò))所以說(shuō)虛擬機(jī)是硬件級(jí)別的虛擬化(把1臺(tái)服務(wù)器虛擬成N臺(tái)服務(wù)器),而docker是軟件操作系統(tǒng)級(jí)別的(把1臺(tái)物理服務(wù)器的CPU獨(dú)立虛擬成N個(gè)CPU,N個(gè)內(nèi)存、N個(gè)主板,這些個(gè)CPU、內(nèi)存和主板可以獨(dú)立自主的任意拼裝),說(shuō)到這里,不知道小伙伴對(duì)docker理解了沒(méi)有,如果你有更多關(guān)于docker的技術(shù)問(wèn)題,歡迎登錄藍(lán)隊(duì)云官網(wǎng)搜索查看。

 

藍(lán)隊(duì)云是成立十五年的云計(jì)算及網(wǎng)絡(luò)安全服務(wù)商,提供域名注冊(cè)、云服務(wù)器、虛擬主機(jī)、對(duì)象存儲(chǔ)、SSL證書、漏洞掃描、安全運(yùn)維、滲透測(cè)試、攻防演練、等保合規(guī)等專業(yè)的產(chǎn)品和服務(wù),平臺(tái)注冊(cè)用戶已超過(guò)100000+,服務(wù)政企客戶60000+,云數(shù)據(jù)庫(kù)支持免費(fèi)試用3個(gè)月,歡迎了解體驗(yàn)。

 

 


提交成功!非常感謝您的反饋,我們會(huì)繼續(xù)努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題: