Docker 鏡像、容器和 Docker Compose的區別

前言:Docker 的鏡像、容器和 Docker Compose 是容器化技術的核心組件,以下是對它們的詳細解析及使用場景說明。


??1、Docker 鏡像(Image)??

  • ??定義??:
    鏡像是只讀模板,包含運行應用程序所需的代碼、依賴、環境配置等。類似于“軟件安裝包”。

  • ??核心特性??:

    • ??分層存儲??:鏡像由多層文件系統疊加而成,每層可通過 Dockerfile 指令(如?FROM,?RUN,?COPY)定義,提升復用性。

    • ??只讀性??:鏡像不可修改,若需更新需重新構建。

    • ??版本管理??:通過標簽(Tag)標識版本,如?nginx:1.21?或?python:3.9-slim

  • ??常用命令??:
    # 構建鏡像
    docker build -t my-app:1.0 .# 拉取鏡像
    docker pull nginx:latest# 列出本地鏡像
    docker images# 刪除鏡像
    docker rmi my-app:1.0

??2、Docker 容器(Container)??

  • ??定義??:
    容器是鏡像的運行實例,包含獨立的進程、文件系統和網絡空間,類似“輕量級虛擬機”。

  • ??核心特性??:

    • ??臨時性??:默認容器停止后數據丟失,需通過卷(Volume)持久化數據。

    • ??隔離性??:資源(CPU、內存)和網絡通過命名空間隔離,可通過參數調整。

    • ??可寫層??:在鏡像之上添加可寫層,容器修改不影響原始鏡像。

  • ??常用命令??:
# 啟動容器
docker run -d --name web -p 80:80 nginx# 查看運行中的容器
docker ps# 進入容器終端
docker exec -it web /bin/bash# 停止/刪除容器
docker stop web
docker rm web

??3、Docker Compose??

  • ??定義??:
    用于定義和運行多容器應用的工具,通過 YAML 文件(docker-compose.yml)配置服務、網絡、卷等。

  • ??核心場景??:

    • ??多服務編排??:如同時啟動 Web 服務、數據庫、緩存等。

    • ??環境隔離??:通過文件定義不同環境的配置(開發、測試)。

    • ??依賴管理??:自動處理服務啟動順序和網絡連接。

  • ??配置文件示例??:
    version: '3'
    services:web:image: nginx:latestports:- "80:80"volumes:- ./html:/usr/share/nginx/htmldb:image: postgres:13environment:POSTGRES_PASSWORD: example
  • ??常用命令??:
    # 啟動所有服務
    docker-compose up -d# 停止并刪除容器
    docker-compose down# 查看服務日志
    docker-compose logs web

4、??使用場景對比??

??鏡像?? → 提供應用運行的基礎模板。

容器?? → 基于鏡像啟動的獨立實例。

??Docker Compose?? → 編排多個容器,簡化復雜應用的部署。

場景鏡像容器Docker Compose
??單服務運行??提供運行環境模板啟動單個實例(如運行 Nginx)不適用
??多服務協作??構建各服務的鏡像分別啟動多個容器通過 YAML 統一管理所有服務
??開發環境配置??定義開發依賴(如 Python 環境)運行開發服務器一鍵啟動整個開發環境(前端 + 后端 + DB)
??持續集成/交付 (CI/CD)??構建標準化應用包測試環境運行在測試流程中編排多組件測試

??5、常見問題解答??

  • ??鏡像 vs 容器??:鏡像是“食譜”,容器是“做好的菜”;鏡像不可變,容器是動態實例。

  • ??數據持久化??:通過卷(Volume)或綁定掛載(Bind Mount)保存數據,避免容器刪除導致數據丟失。

  • ??多環境配置??:使用多個 Compose 文件(如?docker-compose.prod.yml)或環境變量區分不同環境。

  • ??性能優化??:精簡鏡像層、使用?.dockerignore?忽略無用文件、選擇合適的基礎鏡像(如 Alpine 版本)。


參考鏈接:

win10 docker,docker-compose 安裝和配置 - makalo - 博客園

2025最新Docker國內可用鏡像源倉庫地址分享_docker_腳本之家

docker學習使用教程_docker使用教程-CSDN博客

Docker 入門教程(簡明易懂、零基礎篇)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79959.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79959.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79959.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

算法——背包問題(分類)

背包問題(Knapsack Problem)是一類經典的組合優化問題,廣泛應用于資源分配、投資決策、貨物裝載等領域。根據約束條件和問題設定的不同,背包問題主要分為以下幾種類型: 1. 0-1 背包問題(0-1 Knapsack Probl…

多路由器通過RIP動態路由實現通訊(單臂路由)

多路由器通過RIP動態路由實現通訊(單臂路由) R1(開啟端口并配置IP) Router>en Router#conf t Router(config)#int g0/0 Router(config-if)#no shu Router(config-if)#no shutdown Router(config-if)#ip add 192.168.10.254 255.255.255.0 Router(c…

從底層設計原理分析并理解SQL 的執行順序

?一、執行順序的底層設計原理?? ??1. 數據源的確定與連接(FROM → ON → JOIN)?? ??FROM??:數據庫首先需要確定數據的物理來源,從磁盤加載表或子查詢的原始數據。此時尚未應用任何篩選,僅讀取元數據&#…

游戲引擎學習第237天:使用 OpenGL 顯示圖像

win32_game.cpp: 禁用 PFD_DOUBLEBUFFER 我們正在處理一個新的開發階段,目標是在使用 OpenGL 渲染的同時能正常通過 OBS 進行直播。昨天我們已經嘗試了一整天來解決這個問題,希望能找到一種方式讓 OBS 能正確地捕捉到 OpenGL 的窗口畫面。雖然我們不確定…

(二)mac中Grafana監控Linux上的MySQL(Mysqld_exporter)

框架:GrafanaPrometheusMysqld_exporter 一、監控查看端安裝 Grafana安裝-CSDN博客 普羅米修斯Prometheus監控安裝(mac)-CSDN博客 1.啟動Grafana服務 brew services start grafana 打開瀏覽器輸入http://localhost:3000進入grafana登錄…

GitHub 趨勢日報 (2025年04月17日)

本日報由 TrendForge 系統生成 https://trendforge.devlive.org/ 📈 今日整體趨勢 Top 10 排名項目名稱項目描述今日獲星總星數語言1Anduin2017/HowToCook程序員在家做飯方法指南。Programmer’s guide about how to cook at home (Simplified Chinese onl…? 224…

(一)mac中Grafana監控Linux上的CPU等(Node_exporter 安裝使用)

框架:GrafanaPrometheusNode_exporter 機器狀態監控(監控服務器CPU,硬盤,網絡等狀態) Node_exporter安裝在被測服務器上,啟動服務 各步驟的IP地址要換為被測服務器的IP地址Prometheus.yml的 targets值網頁訪問的ip部分grafana添加數據源的…

java IO/NIO/AIO

(?▽?)曼波~~~~!讓曼波用最可愛的賽馬娘方式給你講解吧!(? ???ω??? ?) 🎠曼波思維導圖大沖刺(先看框架再看細節哦): 📚 解釋 Java 中 IO、NIO、AIO 的區別和適用場景: …

Silverlight發展歷程(微軟2021年已經停止支持Silverlight 5)

文章目錄 Microsoft Silverlight 發展歷程引言起源與背景(2006-2007)互聯網技術格局與微軟的挑戰WPF/E 項目的啟動 Silverlight 1.0 的誕生(2007)正式命名與首次發布初步的市場定位 Silverlight 2.0:真正的突破&#x…

【大數據、數據開發與數據分析面試題匯總(含答案)】

在大數據、數據開發與數據分析領域的面試中,扎實掌握各類知識點至關重要。以下是精心整理的面試題,涵蓋單選題和多選題,助你備考一臂之力。 試題目錄 大數據、數據開發與數據分析高頻面試題解析1. 數據倉庫分層架構設計2. 維度建模與范式建模…

Docker部署禪道21.6開源版本

將數據庫相關環境變量分開,增加注釋或空格使得命令更易讀。 如果你的 MySQL 主機、端口等配置沒有變化,應該確保這些信息是安全的,并考慮使用 Docker secrets 或環境變量配置來避免直接暴露敏感信息。 docker run -d -it --privilegedtrue …

Yocto項目實戰教程 · 第4章:4.2小節-菜譜

🔍 B站相應的視頻教程: 📌 Yocto項目實戰教程-第4章-4.2小節-菜譜 記得三連,標為原始粉絲。 在 Yocto 項目中,**菜譜(Recipe)**承載了包的配置信息、源碼獲取方式、編譯與安裝步驟,是…

【pytorch】torch.nn.Unfold操作

說明 一個代碼里涉及到了unfold的操作,看了半天官網都沒整明白維度怎么變化的,參考這個鏈接搞明白了: https://blog.csdn.net/ViatorSun/article/details/119940759 https://zhuanlan.zhihu.com/p/361140988 維度計算 輸入( N,…

Linux 固定IP地址

一.查看網口狀態: $ ip a 二.配置靜態IP文件: $ sudo vi /etc/network/interface auto eth0 iface eth0 inet static address 192.168.0.252 gateway 192.168.0.1 netmask 255.255.255.0 #network 192.168.0.0 #broadcast 192.168.0.255 三.重啟網卡讓新…

android的 framework 有哪些知識點和應用場景

Android Framework 知識點 1. 四大組件 Activity(活動) 是 Android 應用中最基本的組件,用于實現用戶界面。一個 Activity 通常對應一個屏幕的內容。有自己的生命周期,包括 onCreate、onStart、onResume、onPause、onStop、onDe…

如何在PDF.js中改造viewer.html以實現PDF的動態加載

在PDF.js中改造viewer.html實現PDF動態加載,需結合參數傳遞、文件流處理及跨域配置等技術。以下是綜合多個技術方案的核心實現步驟: ?一、基礎參數傳遞法? 1. ?URL參數動態加載? 通過修改viewer.html的URL參數傳遞PDF路徑,適用于靜態文…

組件之間的數據通信方式

Vue 的傳值方式(即組件之間的數據通信方式)根據組件關系不同(父子、兄弟、跨層級)有所區別。下面是常見的傳值方式,按使用場景來分類: 一、父子組件傳值 1. props(父 -> 子) 父…

組件是怎樣寫的(1):虛擬列表-VirtualList

本篇文章是《組件是怎樣寫的》系列文章的第一篇,該系列文章主要說一下各組件實現的具體邏輯,組件種類取自 element-plus 和 antd 組件庫。 每個組件都會有 vue 和 react 兩種實現方式,可以點擊 https://hhk-png.github.io/components-show/ …

個性化的配置AndroidStudio

Android Studio 提供諸多向導和模板,可用于驗證 Java 開發套件 (JDK) 和可用 RAM 等系統要求,以及配置默認設置,例如經過優化的默認 Android 虛擬設備 (AVD) 模擬和更新的系統映像。本文檔介紹了可用于自定義 Android Studio 使用方式的其他配…

人類行為的原動力是自我保存-來自ChatGPT

自我保存(Self-Preservation)確實可以說是人類行為最原始、最底層的驅動力。 簡單來說: 無論我們做什么,表面看動機五花八門,實際上歸根到底都繞不開活下去、保護自己。 💡 從不同層面理解這個觀點&#…