Docker 中卷、容器、鏡像的區(qū)別解析
更新時間:2025年10月22日 09:29:38 作者:nbspzs
本文將Docker的鏡像、容器和卷分別類比為面向?qū)ο缶幊讨械念?、對象和外部存?詳細(xì)分析了三者的特性、生命周期和作用,強調(diào)鏡像只讀、容器可寫且臨時、卷用于數(shù)據(jù)持久化,理解三者關(guān)系是Docker學(xué)習(xí)的關(guān)鍵,感興趣的朋友跟隨小編一起看看吧
?? 核心概念比喻
想象一個面向?qū)ο缶幊痰念惐龋?/strong>
- 鏡像 = 類(模板、藍(lán)圖)
- 容器 = 對象(類的實例)
- 卷 = 外部存儲(數(shù)據(jù)庫、文件系統(tǒng))
?? 詳細(xì)對比
| 概念 | 說明 | 生命周期 | 讀寫特性 | 類比 |
|---|---|---|---|---|
| 鏡像 | 只讀模板,包含應(yīng)用和運行環(huán)境 | 持久化存儲 | 只讀 | 軟件安裝包(.exe文件) |
| 容器 | 鏡像的運行實例 | 臨時性,可隨時創(chuàng)建/刪除 | 讀寫層(基于鏡像) | 正在運行的進程 |
| 卷 | 持久化數(shù)據(jù)存儲 | 獨立于容器生命周期 | 讀寫 | 外接硬盤/U盤 |
?? 深入詳解
1.鏡像- 只讀的模板
# Dockerfile - 構(gòu)建鏡像的配方 FROM ubuntu:20.04 COPY app.py /app/ RUN pip install -r requirements.txt CMD ["python", "/app/app.py"]
特性:
- ? 只讀,不可修改
- ? 分層存儲,每層都有唯一哈希
- ? 可共享(通過 Docker Hub)
- ? 可版本控制(標(biāo)簽)
# 相關(guān)命令 docker images # 查看鏡像 docker pull nginx:latest # 下載鏡像 docker build -t myapp . # 構(gòu)建鏡像 docker rmi <image_id> # 刪除鏡像
2.容器- 運行中的實例
# 基于鏡像創(chuàng)建容器 docker run -d --name my-container nginx:latest
特性:
- ? 可寫(在鏡像基礎(chǔ)上添加讀寫層)
- ? 臨時性(刪除后數(shù)據(jù)丟失)
- ? 隔離性(有自己的文件系統(tǒng)、網(wǎng)絡(luò)、進程空間)
- ? 輕量級(共享主機內(nèi)核)
# 容器生命周期 docker run # 創(chuàng)建并啟動 docker start/stop # 啟動/停止 docker exec -it bash # 進入運行中的容器 docker rm # 刪除容器
3.卷- 持久化數(shù)據(jù)
# 創(chuàng)建和使用卷 docker volume create my-volume docker run -v my-volume:/data nginx
特性:
- ? 持久化(獨立于容器)
- ? 可共享(多個容器可掛載同一卷)
- ? 高性能(不經(jīng)過存儲驅(qū)動)
- ? 可備份遷移
# 卷管理 docker volume create # 創(chuàng)建卷 docker volume ls # 列出卷 docker volume inspect # 查看卷詳情 docker volume rm # 刪除卷
?? 實際工作流示例
場景:部署一個 Web 應(yīng)用
# 1. 獲取鏡像(從Docker Hub) docker pull nginx:1.21 # 2. 創(chuàng)建數(shù)據(jù)卷(持久化存儲) docker volume create app-data # 3. 運行容器(基于鏡像創(chuàng)建實例) docker run -d \ --name web-server \ -v app-data:/usr/share/nginx/html \ -p 80:80 \ nginx:1.21 # 此時: # - nginx:1.21 是鏡像(只讀模板) # - web-server 是容器(運行實例) # - app-data 是卷(持久化存儲網(wǎng)站文件)
?? 數(shù)據(jù)流向圖
鏡像 (只讀)
↓
容器 (讀寫層) ←→ 卷 (持久化數(shù)據(jù))
↓
應(yīng)用運行狀態(tài)
?? 生命周期關(guān)系

?? 關(guān)鍵區(qū)別總結(jié)
- 持久性:
- 鏡像:永久存在(除非刪除)
- 容器:臨時存在
- 卷:永久存在(用于數(shù)據(jù)持久化)
- 可寫性:
- 鏡像:只讀
- 容器:可寫(但數(shù)據(jù)隨容器刪除而丟失)
- 卷:可寫(數(shù)據(jù)持久化)
- 用途:
- 鏡像:打包應(yīng)用和環(huán)境
- 容器:運行應(yīng)用
- 卷:存儲數(shù)據(jù)
?? 最佳實踐
- 鏡像應(yīng)該盡量小而精簡
- 容器應(yīng)該是無狀態(tài)的
- 卷用于存儲需要持久化的數(shù)據(jù)
- 重要數(shù)據(jù)永遠(yuǎn)不要只存在容器層
理解這三者的關(guān)系是掌握 Docker 的關(guān)鍵!
到此這篇關(guān)于Docker 中卷、容器、鏡像的區(qū)別解析的文章就介紹到這了,更多相關(guān)docker 卷 容器 鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker報錯:OCI?runtime?exec?failed:?exec?failed:?contain
這篇文章主要給大家介紹了關(guān)于Docker報錯:OCI?runtime?exec?failed:?exec?failed:?container_linux.go:380:?starting?container?process的解決方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
詳解復(fù)制備份docker容器數(shù)據(jù)的方法
這篇文章主要介紹了詳解復(fù)制備份docker容器數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Docker 部署Go的兩種基礎(chǔ)鏡像的實現(xiàn)
這篇文章主要介紹了Docker 部署Go的兩種基礎(chǔ)鏡像的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
docker如何創(chuàng)建nginx圖片服務(wù)器
這篇文章主要介紹了docker如何創(chuàng)建nginx圖片服務(wù)器問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01

