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