Docker入門指南:鏡像、容器與倉庫的核心概念解析

目錄

前言:為什么需要Docker?

一、Docker能做什么?

二、核心概念解析

1. 鏡像(Image):應用的標準化打包

2. 容器(Container):鏡像的運行實例

3. 鏡像倉庫(Registry):鏡像的集中管理中心

三、Docker的典型工作流程

四、Docker的優勢總結

五、學習建議


前言:為什么需要Docker?

在傳統的應用部署過程中,開發人員經常遇到"在我的機器上能運行,為什么到服務器上就不行?"的經典問題。這個問題的根源在于環境不一致——開發環境、測試環境和生產環境之間的差異導致應用行為不可預測。Docker的出現完美解決了這一痛點,它通過容器化技術實現了"一次構建,處處運行"的理想狀態。

一、Docker能做什么?

Docker的核心價值在于它能夠幫助我們:

  • ?快速下載應用鏡像?:就像從應用商店下載安裝包一樣簡單
  • ?輕松創建和運行容器?:一鍵啟動完整應用環境
  • ?實現快速部署?:從開發到生產環境的一致性保障

二、核心概念解析

1. 鏡像(Image):應用的標準化打包

鏡像是Docker的基石,它包含了:

  • 應用代碼本身
  • 運行所需的函數庫
  • 所有依賴項
  • 環境配置參數

?通俗理解?:鏡像就像是面向對象的"類",它定義了容器的初始狀態和行為。

# 查看本地鏡像列表
docker images# 拉取官方鏡像示例
docker pull nginx

2. 容器(Container):鏡像的運行實例

容器是鏡像的運行實體,具有以下特點:

  • 輕量級:共享主機操作系統內核
  • 可移植:包含運行應用所需的一切
  • 隔離性:進程、網絡、文件系統相互隔離

?生命周期管理?:

# 啟動新容器
docker run -d --name ms -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 mysql

這里做一個命令解讀:

"-d":以后臺(守護進程)模式運行容器。

"--name ms":指定容器名稱為"ms",后續方便使用該名稱直接對容器進行操作。

"-p 3306:3306":端口映射配置【主機端口:容器端口】,這里將主機的3306端口映射到容器的3306端口(MySQL默認端口),允許外部通過主機的3306端口訪問容器內的MySQL服務。

"-e MYSQL_ROOT_PASSWORD=123":設置環境變量,這里是設置MySQL root用戶的密碼為"123",這是MySQL官方鏡像的必需參數,否則容器啟動會失敗。

"mysql":指定使用的鏡像名稱(這里使用官方MySQL鏡像),若本地沒有該鏡像,Docker會自動從Docker Hub下載。

# 查看運行中的容器
docker ps

# 查看運行中的容器(-a:無論容器有沒有啟動都可以查看)
docker ps -a

# 停止容器
docker stop redis

3. 鏡像倉庫(Registry):鏡像的集中管理中心

Docker倉庫分為:

  • ?公共倉庫?:如Docker Hub,包含大量官方和社區維護的鏡像
  • ?私有倉庫?:企業用于內部鏡像管理

三、Docker的典型工作流程

  1. ?開發階段?:編寫Dockerfile定義鏡像
  2. ?構建階段?:docker build生成鏡像
  3. ?測試階段?:docker run啟動容器測試
  4. ?部署階段?:推送到倉庫并部署到生產環境

?示例Dockerfile?(構建一個基于 Python 3.8 的輕量級鏡像,安裝依賴后運行?app.py?并對外暴露 5000 端口。):

FROM python:3.8-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "app.py"]

四、Docker的優勢總結

特性傳統方式Docker方式
環境一致性難以保證完全一致
資源占用高(完整OS)低(共享內核)
啟動速度分鐘級秒級
隔離性較弱
可移植性依賴環境一次構建處處運行

五、學習建議

  1. 從官方文檔開始:https://docs.docker.com
  2. 實踐基礎命令:run、exec、logs等
  3. 嘗試構建自己的第一個鏡像
  4. 進一步可以深入學習Docker Compose管理多容器應用等技術

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

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

相關文章

大模型微調實戰:基于GpuGeek平臺的低成本高效訓練方案

文章目錄 引言一、GpuGeek平臺使用入門1. 注冊與賬號設置2. 控制臺功能概覽3. 快速創建GPU實例3. 預置鏡像與自定義環境 二、GpuGeek平臺核心優勢解析1. 顯卡資源充足:多卡并行加速訓練2. 鏡像超多:開箱即用的開發環境3. 計費靈活:按需付費降…

Linux:計算機的層狀結構

1.馮諾依曼體系結構 我們常見的計算機,如筆記本、臺式機。我們不常見的計算機,如服務器,大部分都遵守馮諾依曼體系結構。 CPU:運算器和控制器組成。運算器主要工作是做算術運算和邏輯運算。控制器主要工作是協調設備之間信息流動的…

LangGraph(四)——加入人機交互控制

目錄 1. 引言2. 添加Human Assistance工具3. 編譯狀態圖4. 提示聊天機器人5. 恢復執行參考 1. 引言 智能體可能不可靠,甚至需要人工輸入才能完成任務。同樣,對于某些操作,你可能需要在運行前獲得人工批準,以保證一切按預期運行。 …

數據結構【AVL樹】

AVL樹 1.AVL樹1.AVL的概念2.平衡因子 2.AVl樹的實現2.1AVL樹的結構2.2AVL樹的插入2.3 旋轉2.3.1 旋轉的原則 1.AVL樹 1.AVL的概念 AVL樹可以是一個空樹。 它的左右子樹都是AVL樹,且左右子樹的高度差的絕對值不超過1。AVL樹是一顆高度平衡搜索二叉樹,通…

JavaScript【5】DOM模型

1.概述: DOM (Document Object Model):當頁面被加載時,瀏覽器會創建頁面的文檔對象模型,即dom對象;dom對象會被結構化為對象樹,如一個HTML文檔會被分為head,body等部分,而每個部分又…

STM32燒錄程序正常,但是運行異常

一、硬件配置問題 BOOT引腳設置錯誤 STM32的啟動模式由BOOT0和BOOT1引腳決定。若設置為從RAM啟動(BOOT01,BOOT10),程序在掉電后無法保存,導致復位后無法正常運行。應確保BOOT00(從Flash啟動)15。…

汽車二自由度系統模型以及電動助力轉向系統模型

汽車二自由度系統模型與電動助力轉向系統(EPS)的詳細建模方案,包含理論推導、MATLAB/Simulink實現代碼及參數說明: 一、二自由度汽車模型 1. 模型描述 包含以下兩個自由度: 橫向運動(側向加速度&#xf…

git提交庫常用詞

新功能 feat修改BUG fix文檔修改 docs格式修改 style重構 refactor性能提升 perf測試 test構建系統 build對CI配置文件修改 ci修改構建流程、或增加依賴庫、工具 chore回滾版本 revert

JavaScript 時間轉換:從 HH:mm:ss 到十進制小時及反向轉換

關鍵點 JavaScript 可以輕松實現時間格式(HH:mm:ss 或 HH:mm)與十進制小時(如 17.5)的相互轉換。兩個函數分別處理時間字符串到十進制小時,以及十進制小時到時間字符串的轉換,支持靈活的輸入和輸出格式。這…

LLM智能體新紀元:深入解析MCP與A2A協議,賦能智能自動化協作

LLM智能體(LLM agents)是能夠自主行動以實現特定目標的AI系統。在實際應用中,智能體能夠將用戶請求拆解為多個步驟,利用知識庫或API獲取數據,最終整合出答案。這讓智能體相比于傳統獨立聊天機器人擁有更強大的能力——…

[PMIC]PMIC重要知識點總結

PMIC重要知識點總結 摘要:PMIC (Power Management Integrated Circuit) 是現代電子設備中至關重要的組件,負責電源管理,包括電壓調節、電源轉換、電池管理和功耗優化等。PMIC 中的數字部分主要涉及控制邏輯、狀態機、寄存器配置、通信接口&am…

PYTHON訓練營DAY28

類 (一)題目1:定義圓(Circle)類 要求: 包含屬性:半徑 radius。包含方法: calculate_area():計算圓的面積(公式:πr)。calculate_circ…

機器學習-人與機器生數據的區分模型測試 -數據篩選

內容繼續機器學習-人與機器生數據的區分模型測試 使用隨機森林的弱學習樹來篩選相對穩定的特征數據 # 隨機森林篩選特征 X data.drop([city, target], axis1) # 去除修改前的城市名稱列和目標變量列 y data[target] X_train, X_test, y_train, y_test train_test_split(X…

Data whale LLM universe

使用LLM API開發應用 基本概念 Prompt Prompt 最初指的是自然語言處理研究人員為下游任務設計的一種任務專屬的輸入模板。 Temperature 使用Temperature參數控制LLM生成結果的隨機性和創造性,一般取值設置在0~1之間,當取值接近1的時候預測的隨機性較…

Azure 應用的托管身份與服務主體

Microsoft Entra ID -- 前稱 Azure Active Directory -- 提供強大的身份驗證和授權功能。托管身份和服務主體通過限制憑據暴露的風險來幫助確保對 Azure 資源的訪問安全。 托管身份為Azure原生應用程序自動管理身份,而服務主體則非常適合需要訪問Azure資源的外部應…

16 C 語言布爾類型與 sizeof 運算符詳解:布爾類型的三種聲明方式、執行時間、賦值規則

1 布爾類型 1.1 布爾類型概述 布爾類型用于表示邏輯上的真(true)和假(false)兩種狀態,是編程中條件判斷和邏輯運算的基礎。在 C 語言中,布爾值的表示方式隨著標準的發展而不斷完善。 1.2 布爾類型的三種聲…

【C++詳解】string各種接口如何使用保姆級攻略

文章目錄 一、string介紹二、string使用構造函數析構函數賦值運算符重載string的遍歷修改方法1、下標[]2、迭代器3、范圍for 迭代器使用詳解const迭代器反向迭代器(reverse) Capacity(容量相關)size/lengthmax_sizecapacityclear/emptyshrink_to_fit(縮容)reserve(擴…

回調函數應用示例

回調函數是一種通過函數指針(或引用)調用的函數,它在特定事件或條件發生時被另一個函數調用。回調函數的核心思想是將函數作為參數傳遞,以便在適當的時候執行自定義邏輯,常用于異步編程、事件驅動架構等場景。 業務場景…

linux標準庫頭文件解析

linuxc標準庫 C 標準庫&#xff08;C Standard Library&#xff09;包含了一組頭文件&#xff0c;這些頭文件提供了許多函數和宏&#xff0c;用于處理輸入輸出、字符串操作、數學計算、內存管理等常見編程任務。。 頭文件功能簡介<stdio.h>標準輸入輸出庫&#xff0c;包含…

Unbuntu 命令

Ubuntu 命令速查表? ?分類??命令??功能描述??示例/常用選項????文件與目錄?ls列出目錄內容ls -a&#xff08;顯示隱藏文件&#xff09;; ls -lh&#xff08;詳細列表易讀大小&#xff09; cd切換目錄cd ~&#xff08;主目錄&#xff09;; cd ..&#xff08;上級…