- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認證網(wǎng)站身份V標記
- 域名注冊服務(wù)機構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機構(gòu):新網(wǎng)數(shù)碼
隨著家庭 NAS 的慢慢普及,越來越多的人擁有了自己的 NAS,就拿老宋來說,因為我工作中就接觸一些服務(wù)器、數(shù)據(jù)庫、docker 等等的東西,雖然不是說掌握,但是起碼了解這些個東西,但是要知道不是所有的人都知道這些名詞后面的含義,服務(wù)器這個相對好說,就是性能和穩(wěn)定性更高的電腦主機,數(shù)據(jù)庫就想象成功能更加強大的 excel 表格,那么什么是 docker 呢,今天老宋就來和小伙伴們一起學習下docker,想通俗理解請直接移步第四、五部分。
一、docker 基本架構(gòu)示意
二、名詞解釋
Docker 是一個用于開發(fā)、部署和運行應用程序的開源平臺,下面是 Docker 中一些常見名詞的解釋:
1. Docker 引擎(Docker Engine)
Docker 引擎是 Docker 平臺的核心組件,它是一個客戶端 - 服務(wù)器應用程序,由守護進程(dockerd)、REST API 服務(wù)器和命令行界面(CLI)組成。守護進程負責管理容器、鏡像等資源,REST API 服務(wù)器允許其他程序與守護進程進行交互,而 CLI 則提供了用戶與 Docker 引擎交互的命令行工具。
2. 鏡像(Image)
Docker 鏡像是一個只讀的模板,它包含了運行應用程序所需的所有文件系統(tǒng)、代碼、運行時環(huán)境、庫和配置等??梢詫㈢R像看作是應用程序的快照,它可以用來創(chuàng)建 Docker 容器。鏡像可以從 Docker Hub 等鏡像倉庫中下載,也可以使用 Dockerfile 自行構(gòu)建。
3. 容器(Container)
容器是鏡像的一個運行實例。當你啟動一個鏡像時,就會創(chuàng)建一個容器。容器是一個獨立的、隔離的環(huán)境,它可以在任何支持 Docker 的系統(tǒng)上運行,并且具有自己的文件系統(tǒng)、進程空間和網(wǎng)絡(luò)配置等。容器之間相互隔離,不會相互影響,這使得應用程序的部署和管理更加方便和安全。
4. Dockerfile
Dockerfile 是一個文本文件,它包含了一系列的指令和參數(shù),用于描述如何構(gòu)建 Docker 鏡像。通過編寫 Dockerfile,你可以定義鏡像的基礎(chǔ)操作系統(tǒng)、安裝軟件包、復制文件、設(shè)置環(huán)境變量等操作。使用 docker build 命令可以根據(jù) Dockerfile 構(gòu)建出一個新的鏡像。
5. 倉庫(Repository)
Docker 倉庫是用于存儲和分發(fā) Docker 鏡像的地方。類似于代碼倉庫,鏡像倉庫可以包含多個鏡像,并且可以對鏡像進行版本管理。Docker Hub 是 Docker 官方提供的公共鏡像倉庫,你可以在上面找到各種類型的鏡像。此外,你也可以搭建自己的私有鏡像倉庫,用于存儲和管理公司或團隊內(nèi)部的鏡像。
6. 標簽(Tag)
標簽是用于標識鏡像版本的一種方式。在 Docker 中,一個鏡像可以有多個標簽,通過標簽可以方便地區(qū)分不同版本的鏡像。例如,nginx:1.23.4 中的 1.23.4 就是一個標簽,它表示這是 Nginx 鏡像的 1.23.4 版本。
7. 卷(Volume)
卷是 Docker 中用于持久化數(shù)據(jù)的一種機制。由于容器是臨時的,當容器被刪除時,容器內(nèi)的數(shù)據(jù)也會被刪除。而卷可以將容器內(nèi)的數(shù)據(jù)存儲在宿主機上,這樣即使容器被刪除,數(shù)據(jù)也不會丟失。卷還可以在多個容器之間共享,方便數(shù)據(jù)的共享和管理。
8. 網(wǎng)絡(luò)(Network)
Docker 網(wǎng)絡(luò)用于實現(xiàn)容器之間以及容器與外部世界之間的通信。Docker 提供了多種網(wǎng)絡(luò)驅(qū)動,如橋接網(wǎng)絡(luò)、主機網(wǎng)絡(luò)、覆蓋網(wǎng)絡(luò)等。通過網(wǎng)絡(luò),容器可以相互訪問,也可以訪問外部網(wǎng)絡(luò)資源。例如,你可以將一個 Web 應用容器和一個數(shù)據(jù)庫容器連接到同一個網(wǎng)絡(luò)中,使它們可以相互通信。
三、基本原理
Docker 核心解決的問題是利用其自研的 libcontainer 來實現(xiàn)類似虛擬機(VM)的功能,從而利用盡可能少的硬件資源給用戶提供盡可能好的服務(wù)。與 VM 不同, libcontainer 并不是一套硬件虛擬化方法,而是操作系統(tǒng)級的虛擬化。這理解起來可能并不像 VM 那樣直觀,所以可以從 Docker 要解決的問題出發(fā),看看它是怎么滿足用戶虛擬化需求的。
用戶需要考慮虛擬化方法,尤其是硬件虛擬化方法,需要借助其解決的問題主要是以下 4 個:
l 隔離性
每個用戶實例之間相互隔離, 互不影響。 硬件虛擬化方法的方案是 VM;libcontainer 的方案是容器,具體而言是 namespace。其中的 pid, net, ipc, mnt, uts 等將容器的進程, 網(wǎng)絡(luò), 消息, 文件系統(tǒng)和主機隔離開。
l 可配額/可度量
每個用戶實例可以按需提供其計算資源,所使用的資源可以被計量。硬件虛擬化方法因為虛擬了 CPU 和內(nèi)存,可以方便實現(xiàn);libcontainer 則主要是利用 cgroups 來控制資源。cgroups 實現(xiàn)了對資源的配額和度量,提供了類似文件的接口。在 /cgroup 目錄下新建一個文件夾即可新建一個 group,在此文件夾中新建 task 文件,并將 pid 寫入該文件,即可實現(xiàn)對該進程的資源控制。
l 移動性
用戶的實例可以很方便地復制、移動和重建。硬件虛擬化方法通過 snapshot 和 image 來實現(xiàn);Docker 主要通過 AUFS 實現(xiàn)。AUFS (AnotherUnionFS) 是一種聯(lián)合文件系統(tǒng), 就是支持將不同目錄掛載到同一個虛擬文件系統(tǒng)下的文件系統(tǒng)。它具有節(jié)省存儲空間、快速部署、節(jié)省內(nèi)存、升級方便、允許在不更改 base-image 的同時修改其目錄中的文件的特點。
l 安全性
這個討論范圍較大,這里強調(diào)是 host 主機的角度盡量保護容器。硬件虛擬化的方法因為虛擬化的水平比較高,用戶進程都是在 KVM 等虛擬機中運行的;然而對于 libcontainer, 其中運行的進程應當是事先靜態(tài)編譯完成的。用戶提供的參數(shù)也是通過 exec 系統(tǒng)調(diào)用提供給用戶進程。通常情況下容器中也沒有長進程存在。
四、通俗解釋
上面說的那些是不是有點頭皮發(fā)麻了,別擔心,下面老宋用通俗的話解釋下 Docker 里的常見名詞:
1. Docker 引擎
可以把 Docker 引擎想象成一個大工廠的總調(diào)度室。這里有一群工作人員(守護進程)負責安排各種生產(chǎn)任務(wù),比如組裝產(chǎn)品(創(chuàng)建容器)、存儲原料(管理鏡像)。同時,有一套通信系統(tǒng)(REST API 服務(wù)器)讓其他部門能和調(diào)度室溝通,下達生產(chǎn)指令。而工人們手里的操作手冊(命令行界面),能讓他們方便地按照要求完成工作。
2. 鏡像
鏡像就像是制作電腦主機的配件。這些個配件包含了制作電腦主機所需的所有信息,像主板、CPU、內(nèi)存等配件(文件系統(tǒng)、代碼、運行環(huán)境等)的型號和數(shù)量,以及組裝步驟(配置)。有了這些配件,就能做出很多一樣的主機(容器)。
3. 容器
容器是用配件(鏡像)組裝出來的主機。每個主機都是獨立的個體,有自己的序列號、配置(獨立的文件系統(tǒng)、進程空間和網(wǎng)絡(luò)配置)。即使有一個主機壞了,也不會影響其他主機。
4. Dockerfile
Dockerfile 好比是一份組裝主機的操作說明書。它清楚地寫著要準備哪些配件、用什么工具、按照什么順序來組裝。只要照著這份說明書(使用 docker build 命令),就能準備好所有的配件(鏡像)。
5. 倉庫
倉庫就像一個大倉庫,專門用來存放各種配件(鏡像)。Docker Hub 是一個公共的大倉庫,大家都能去里面挑選自己需要的配件。而公司或團隊也可以建一個自己的小倉庫(私有鏡像倉庫),把自己獨立開發(fā)的配置存起來。
6. 標簽
標簽就像是貼在配件上的紙條,上面寫著這個配件是用來組裝哪種主機的,以及可以組裝成那個版本的主機。比如一個內(nèi)存條上寫著“3200 DDR4 16GB 序列號***”,這就說明這個內(nèi)存條只能用于支持 DDR4 的主板。
7. 卷
卷可以看作是主機的配件收納箱。因為主機(容器)可能會壞掉,但里面的 CPU、內(nèi)存、主板等重要配件(數(shù)據(jù))可以放在收納箱里保存起來。這樣即使主機沒了,配件還在,下次還能接著用。而且這個收納箱里的配件還能在不同的主機(容器)之間共享。
8. 網(wǎng)絡(luò)
網(wǎng)絡(luò)就像是主機之間的網(wǎng)線。通過網(wǎng)線,主機(容器)之間可以互相送蛋糕(傳輸數(shù)據(jù)),也能和外面的世界(外部網(wǎng)絡(luò))做生意。不同的道路和通信方式(網(wǎng)絡(luò)驅(qū)動)適用于不同的情況。
五、總結(jié)
如果你讀到這里,那么恭喜小伙伴,你應該對docker是什么有個概念了,其實和windows操作系統(tǒng)相比,docker可以理解成把某個應用程序封裝成一個鏡像,但是這個應用程序獨立于這個操作系統(tǒng)(獨立于操作系統(tǒng)運行、獨立于操作系統(tǒng)使用的網(wǎng)絡(luò))所以說虛擬機是硬件級別的虛擬化(把1臺服務(wù)器虛擬成N臺服務(wù)器),而docker是軟件操作系統(tǒng)級別的(把1臺物理服務(wù)器的CPU獨立虛擬成N個CPU,N個內(nèi)存、N個主板,這些個CPU、內(nèi)存和主板可以獨立自主的任意拼裝),說到這里,不知道小伙伴對docker理解了沒有,如果你有更多關(guān)于docker的技術(shù)問題,歡迎登錄藍隊云官網(wǎng)搜索查看。
藍隊云是成立十五年的云計算及網(wǎng)絡(luò)安全服務(wù)商,提供域名注冊、云服務(wù)器、虛擬主機、對象存儲、SSL證書、漏洞掃描、安全運維、滲透測試、攻防演練、等保合規(guī)等專業(yè)的產(chǎn)品和服務(wù),平臺注冊用戶已超過100000+,服務(wù)政企客戶60000+,云數(shù)據(jù)庫支持免費試用3個月,歡迎了解體驗。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP