Docker 是一款流行的容器化技術(shù),為了更好地理解 Docker 的基本架構(gòu),我們可以從以下三個方面來分析:
第一,鏡像。鏡像就像是一個安裝包,包含了我們要運行的應(yīng)用程序和其所有的依賴庫、配置文件等。Docker 的鏡像是使用類似于 Git 的分層機(jī)制來組織的,每一層都是一個只讀文件系統(tǒng)的差異。
+---------------------+
| Image 3 |
| Layer 3 |
| /bin/program |
+---------------------+
| Image 2 |
| Layer 2 |
| /usr/lib/libc.so.6 |
+---------------------+
| Image 1 |
| Layer 1 |
| /usr/bin/python3 |
+---------------------+
第二,容器。容器是鏡像運行時的一個實例,類似于一個輕量級的虛擬機(jī)。容器可以被創(chuàng)建、啟動、停止、刪除等。容器內(nèi)的應(yīng)用程序可以訪問同一主機(jī)的文件系統(tǒng)和網(wǎng)絡(luò)端口,但只能看到容器內(nèi)的文件系統(tǒng)中的內(nèi)容。
+---------------+
| Container 1|
| +-----------+ |
| | Application| |
| +-----------+ |
| | Filesystem| |
| +-----------+ |
| |NetworkPort| |
| +-----------+ |
+---------------+
第三,倉庫。倉庫是存儲鏡像的地方,它可以是一個本地的倉庫,也可以是遠(yuǎn)程的倉庫。我們可以將本地的鏡像推送到遠(yuǎn)程倉庫,也可以從遠(yuǎn)程倉庫中拉取鏡像到本地使用。
+---------------+
| Local |
| Repository |
+--------+------+
|
v
+--------+------+
| Remote |
| Repository |
| |
+---------------+
綜上,Docker 的基本架構(gòu)可以概括為:鏡像 + 容器 + 倉庫。