Docker 是怎么工作的?你知道嗎?
Docker 是如何工作的?
下圖展示了 Docker 的架構(gòu),以及當我們運行 "docker build"、"docker pull "和 "docker run "時它是如何工作的。
Docker 架構(gòu)由 3 個部分組成:
Docker 客戶端
Docker 客戶端與 Docker 管理進程對話。
Docker 主機
Docker 管理進程監(jiān)聽 Docker API 請求,并管理 Docker 對象,如鏡像、容器、網(wǎng)絡(luò)和卷。
Docker 注冊表
Docker 注冊表存儲 Docker 鏡像。Docker Hub 是任何人都可以使用的公共注冊表。
讓我們以 "docker run "命令為例來看看整個工作過程。
- Docker 從注冊表中提取映像。
- Docker 創(chuàng)建一個新容器。
- Docker 為容器分配一個讀寫文件系統(tǒng)。
- Docker 創(chuàng)建一個網(wǎng)絡(luò)接口,將容器連接到默認網(wǎng)絡(luò)。
- Docker 啟動容器。
有了 Docker,我們可以快速開發(fā)、打包和運行應(yīng)用程序。下圖對比了傳統(tǒng)開發(fā)和基于 Docker 的開發(fā)部署流程。
圖片
開發(fā)人員可以在本地編寫代碼,然后構(gòu)建 Docker 鏡像并將其推送到開發(fā)環(huán)境。這樣,開發(fā)工作就可以在團隊內(nèi)部共享。測試會在開發(fā)環(huán)境中自動運行。
鏡像是一個只讀模板,包含創(chuàng)建 Docker 容器的說明。我們使用 Dockerfile 來定義創(chuàng)建鏡像和運行鏡像的步驟。
當發(fā)現(xiàn) bug 或需要改進時,上述過程可以增量運行。
當開發(fā)測試完成后,Docker 鏡像會被推送到生產(chǎn)環(huán)境(通常在云上)。
與不使用 Docker 的傳統(tǒng)開發(fā)方式相比,Docker 是相當輕量級和快速的,因為每次我們進行更改時,只需重建 Dockerfile 中已更改的部分。