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