前言
???????在當今快速迭代的軟件開發與部署領域,容器化技術已成為不可或缺的核心力量,而 Docker 作為容器化技術的杰出代表,正以其輕量、高效、可移植的特性深刻改變著開發與運維的模式。它有效解決了 “在我機器上能運行,在你那里卻不行” 的環境一致性難題,極大簡化了應用的打包、分發與部署流程,讓開發者能夠更專注于業務邏輯的實現,而非環境配置的瑣碎細節。?
一、Docker的初步認識
1.什么是Docker?
Docker官網
DockerHub官網
Docker 是一個用于開發、部署和運行應用程序的開源平臺,它采用容器化技術,將應用及其依賴項打包成獨立的容器,確保應用在不同環境中無縫運行。以下是對 Docker 的詳細解釋:
(1). 核心概念
倉庫(Registry)
- 鏡像存儲中心:倉庫用于存儲和分發鏡像,例如 Docker Hub、阿里云容器鏡像服務等。
- 公有與私有:公有倉庫免費使用,私有倉庫適合企業內部管理鏡像。
- 注:類比為軟件官網,其具有分發軟件安裝包(鏡像)的功能。
鏡像(Image)
- 容器的模板:鏡像是一個只讀的文件,包含創建容器所需的所有內容(代碼、依賴、配置等)。
- 分層結構:鏡像采用分層存儲,復用公共層,減少存儲空間和下載時間。
- 注:類比為常見的軟件安裝包。
容器(Container)
- 輕量級隔離環境:容器是應用運行的獨立環境,包含代碼、運行時、系統工具和庫,與其他容器共享宿主機操作系統內核。
- 隔離性:容器之間相互隔離,不會影響其他容器或宿主機的運行狀態。
- 注:類比為軟件安裝包安裝軟件后的一個正在運行的軟件,在該軟件環境(就相當于容器)下進行相應的工作。
(2). Docker 與傳統虛擬機的區別
Docker 與虛擬化技術:本質差異與演進邏輯
Docker 與傳統虛擬化技術(如 VMware、Hypervisor)均屬于環境隔離技術,但在架構設計、資源利用和應用場景上存在本質差異。Docker 通過容器化技術對操作系統層進行深度封裝,實現了比虛擬機更輕量、更高效的應用隔離方案。
1). 技術架構對比:從系統級隔離到應用級隔離
維度 | Docker 容器 | 傳統虛擬機 |
---|---|---|
隔離層級 | 操作系統層(共享內核,隔離用戶空間) | 硬件層(通過 Hypervisor 虛擬完整硬件) |
資源抽象 | 應用進程 + 依賴庫 | 完整操作系統 + 硬件驅動 |
啟動機制 | 直接啟動應用進程(無需加載內核) | 需要引導整個操作系統 |
鏡像體積 | 通常幾十 MB 到 GB 級(分層存儲) | 通常數 GB 到 TB 級(含完整系統) |
運行密度 | 單主機可運行數百個容器 | 單主機通常運行數十個虛擬機 |
2). Docker 的核心創新:容器深度封裝技術
Docker 在容器基礎上引入了三大核心封裝機制:
-
聯合文件系統(UnionFS)
- 通過分層存儲技術,將應用依賴、配置和代碼分層打包,不同容器可共享基礎層,大幅減少存儲空間占用和部署時間。
- 示例:多個 Python 應用可共享同一 Python 運行時鏡像層。
-
網絡命名空間與虛擬網絡
- 為每個容器分配獨立的網絡棧(IP、端口、路由表),支持橋接、overlay 等多種網絡模式,實現容器間安全通信。
- 對比虛擬機:無需為每個容器分配虛擬網卡,網絡延遲更低。
-
Cgroups 資源隔離
- 通過 Linux Control Groups 精確限制容器的 CPU、內存、IO 等資源,避免單個容器耗盡系統資源。
- 特性:支持動態調整資源配額,適應彈性伸縮場景。
3). 性能對比:輕量與高效的實證數據
測試指標 | Docker 容器 | 虛擬機 | 性能差異 |
---|---|---|---|
啟動時間 | 0.1-1 秒 | 30-120 秒 | 快 30-1000 倍 |
內存占用(Nginx) | ~5MB | ~200MB | 節省 97% 內存 |
吞吐量(HTTP 請求) | 約 95% 原生性能 | 約 70% 原生性能 | 提升 35% 吞吐量 |
4). 應用場景的分化與融合
-
Docker 適用場景:
- 微服務架構(如 Netflix、Amazon 的容器化改造)
- CI/CD 流水線(GitLab、Jenkins 的容器化部署)
- 開發環境一致性保障(DevOps 團隊協作)
-
虛擬機適用場景:
- 異構操作系統共存(Windows + Linux 混合環境)
- 安全敏感型應用(金融、醫療領域的合規要求)
- 資源密集型單應用(傳統數據庫、中間件)
-
融合趨勢:
- 容器云平臺:在虛擬機集群上部署 Docker,兼顧隔離性與彈性(如 AWS EKS、阿里云 ACK)
- 邊緣計算:輕量級容器在資源受限設備上替代虛擬機(如 Raspberry Pi + Docker)
5). 技術選型決策矩陣
需求維度 | 優先選擇 Docker | 優先選擇虛擬機 |
---|---|---|
資源利用率 | 高(密度部署) | 低(冗余系統開銷) |
部署速度 | 秒級(適合頻繁迭代) | 分鐘級(適合長期穩定運行) |
異構環境支持 | 單一內核(Linux/Windows) | 多操作系統(跨平臺兼容) |
安全隔離級別 | 進程級隔離(需加固配置) | 系統級隔離(天然安全邊界) |
Docker 與傳統虛擬機的區別的總結:容器技術的演進價值
???????Docker 通過操作系統級虛擬化,在保留虛擬機隔離優勢的同時,消除了傳統虛擬化的性能損耗和資源冗余。其核心價值在于:
- 開發效率提升:一次構建,隨處運行,徹底解決 “環境不一致” 問題
- 運維成本降低:資源利用率提升 3-5 倍,部署速度提升 10-100 倍
- 架構創新:推動微服務、Serverless 等新型架構落地
對比項 | Docker 容器 | 傳統虛擬機 |
---|---|---|
隔離級別 | 共享內核,進程級隔離 | 完全隔離,包含獨立操作系統 |
啟動速度 | 秒級啟動 | 分鐘級啟動 |
資源占用 | 輕量,僅需必要依賴 | 重量級,需完整操作系統 |
性能 | 接近原生性能 | 性能損耗較大 |
部署效率 | 高(鏡像復用、快速部署) | 低(需安裝完整操作系統) |
虛擬機的架構圖:
Docker的架構圖:
簡化的虛擬機和Docker的架構對比圖:
(3). Docker 的優勢
- 環境一致性:確保開發、測試、生產環境一致,避免 “環境差異” 導致的問題。
- 快速部署與擴展:容器秒級啟動,支持快速復制和擴展,適應微服務架構。
- 資源利用率高:多個容器共享內核,資源占用少,提升硬件利用率。
- 可移植性強:一次構建,隨處運行(支持 Linux、Windows、macOS 等)。
- 版本控制:鏡像支持版本管理,方便回滾和追蹤變更。
(4). 典型應用場景
- 微服務架構:將應用拆分為多個獨立容器,實現松耦合、高可用。
- 持續集成與部署(CI/CD):自動化構建、測試和部署容器化應用。
- 開發環境管理:為團隊提供一致的開發環境,避免依賴沖突。
- 資源密集型應用:通過容器隔離和資源限制,優化資源分配。
(5). 基本工作流程
- 編寫 Dockerfile:定義應用的環境和依賴。
- 構建鏡像:使用?
docker build
?命令創建鏡像。 - 運行容器:使用?
docker run
?命令啟動容器。 - 推送 / 拉取鏡像:將鏡像上傳至倉庫或從倉庫下載。
(6). 核心組件
- Docker 引擎:運行在宿主機上的服務,負責創建和管理容器。
- Docker CLI:命令行工具,用于與 Docker 引擎交互。
- Docker Compose:定義和運行多容器應用的工具(通過 YAML 文件配置)。
- Docker Swarm/Kubernetes:容器編排工具,用于集群管理和自動化部署。
Docker-總結
???????Docker 通過容器化技術,將應用與環境解耦,實現了高效、一致的應用交付。它已成為云計算、DevOps 和微服務領域的基石技術,幫助開發者和運維團隊降低成本、提升效率。在后續內容中,我們將詳細介紹如何在 Ubuntu 系統上安裝和配置 Docker 環境。
2.為什么使用Docker?
使用 Docker 的核心價值,在于它從根本上解決了軟件開發、部署和運維中的一系列經典痛點,尤其在云原生、微服務和 DevOps 興起的背景下,其優勢被進一步放大。具體可從以下 6 個核心場景和技術價值展開:
1).?徹底解決 “環境不一致” 問題:一次構建,隨處運行
開發中最常見的矛盾是:“在我電腦上能跑,到你這怎么就報錯了?” 根源在于開發、測試、生產環境的依賴(如系統版本、庫版本、配置文件)存在差異。
Docker 通過容器鏡像將應用及其所有依賴(代碼、運行時、庫、環境變量、配置文件)打包成一個不可變的 “標準化交付單元”。無論在開發者的筆記本(Ubuntu/macOS)、測試服務器(CentOS)還是生產集群(云服務器),只要安裝了 Docker,容器就能以完全一致的方式運行,消除了 “環境適配” 的重復勞動。
2).?資源效率碾壓傳統虛擬化:輕量、高密度、低成本
相比虛擬機(VM),Docker 容器的 “輕量性” 帶來了顯著的資源優勢:
- 啟動速度:容器直接復用宿主機內核,無需加載完整操作系統,啟動時間從虛擬機的 “分鐘級” 縮短到 “秒級甚至毫秒級”(如 Nginx 容器啟動僅需 0.1 秒)。
- 資源占用:容器僅包含應用及必要依賴,鏡像體積通常是虛擬機鏡像的 1/10 到 1/100(例如一個 Python 應用容器約 50MB,而同等功能的虛擬機鏡像可能達 5GB)。
- 運行密度:單臺服務器可運行數百個容器(而虛擬機通常只能運行幾十個),大幅提升硬件利用率,降低服務器采購和運維成本(尤其對云服務器按資源計費場景)。
3).?簡化部署與運維:從 “手動配置” 到 “自動化交付”
傳統部署流程(如手動安裝依賴、改配置、啟停服務)不僅繁瑣,還容易因人為操作出錯。Docker 通過鏡像版本管理和容器編排,將部署流程 “代碼化”:
- 版本可控:鏡像支持版本標簽(如
app:v1.0
、app:v2.0
),部署時指定版本即可,回滾時只需切換標簽,比手動卸載 / 重裝高效 10 倍以上。 - 自動化集成:無縫對接 CI/CD 工具(如 GitLab CI、Jenkins),代碼提交后自動構建鏡像、運行測試、部署到目標環境,實現 “提交即部署” 的 DevOps 閉環。
- 批量操作:通過 Docker Compose 或 Kubernetes,可一鍵啟動 / 停止 / 擴容多個關聯容器(如 “前端 + 后端 + 數據庫” 的微服務組合),替代復雜的手動腳本。
4).?微服務架構的 “最佳搭檔”:解耦與彈性伸縮
在微服務架構中,一個系統被拆分為多個獨立服務(如用戶服務、訂單服務、支付服務),每個服務需要獨立部署、擴展和維護。Docker 的特性完美適配這一需求:
- 服務隔離:每個微服務運行在獨立容器中,通過虛擬網絡通信,單個服務崩潰不會影響其他服務,且資源(CPU / 內存)可單獨限制,避免 “一個服務耗盡整機資源”。
- 彈性伸縮:當某個服務壓力增大時,可通過容器編排工具(如 K8s)快速復制多個容器實例分擔負載,壓力減小時自動銷毀冗余實例,實現 “按需分配資源”。
- 技術棧靈活:不同微服務可使用不同技術棧(如 A 服務用 Python,B 服務用 Java),容器化后無需擔心依賴沖突,降低跨團隊協作的技術門檻。
5).?開發效率提升:快速搭建 “干凈環境”
開發者常需要在本地測試不同版本的依賴(如 “測試 Python 3.8 和 3.9 對應用的影響”),或臨時啟動輔助服務(如 Redis、MySQL)。傳統方式需手動安裝、配置,結束后還得清理殘留文件,耗時且易污染系統。
Docker 可通過臨時容器快速解決:
- 啟動一個
redis:6.2
容器,用完直接刪除(docker rm
),無需擔心系統殘留配置; - 為不同依賴版本創建獨立鏡像(如
app:py38
、app:py39
),切換環境只需切換容器,避免本地環境 “越用越亂”。
6).?跨平臺兼容性:從本地到云,無縫遷移
無論是個人電腦(Windows/macOS/Linux)、物理服務器,還是公有云(AWS/Azure/ 阿里云)、私有云,只要支持 Docker,容器就能一致運行。這打破了 “云廠商鎖定”:
- 開發者在本地用 Ubuntu 開發的容器,可直接部署到阿里云 ECS(CentOS 系統),無需修改任何配置;
- 未來若需從 AWS 遷移到自建數據中心,只需遷移鏡像和容器配置,避免因平臺差異導致的 “重寫適配代碼”。
總結:Docker 的核心價值公式
Docker = 環境一致性 + 資源效率 + 部署自動化 + 架構靈活性
它不是 “銀彈”,但在大多數場景下(尤其是分布式系統、頻繁迭代、多環境協作),能將團隊的 “無效勞動”(環境調試、手動部署、跨平臺適配)轉化為 “有效創新”,這也是它從 2013 年誕生至今,成為云原生時代基礎設施的核心原因。
3.概念詳解
1)鏡像
???????操作系統一般分為內核和用戶空間,而對于 Linux 而言,內核啟動后,會掛載 root 文件系統(rootfs)為其提供用戶空間支持。而 Docker 鏡像(Image)就相當于是一個 root 文件系統。比如:官方鏡像 ubuntu:22.04 就包含了完整的一套 Ubuntu 22.04 最小系統的 root 文件系統。同時,Docker 鏡像 是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。鏡像不包含 任何動態數據,其內容在構建之后也不會被改變。
???????鏡像的分層存儲:
???????因為鏡像包含操作系統完整的 root 文件系統,其體積往往是龐大的,因此在 Docker 設計時,就充分利用 Union FS 的技術,將其設計為分層存儲的架構。所以嚴格來說,鏡像并非是像一個 ISO 那樣的打包文件,鏡像只是一個虛擬的概念,其實際體現并非由一個文件組成,而是由一組文件系統組成,或者說,由多層文件系統聯合組成。
???????鏡像構建時,會一層層構建,前一層是后一層的基礎。每一層構建完就不會再發生改變,后一層上的任何改變只發生在自己這一層。比如,刪除前一層文件的操作,實際不是真的刪除前一層的文件,而是僅在當前層標記為該文件已刪除。在最終容器運行的時候,雖然不會看到這個文件,但是實際上該文件會一直跟隨鏡像。因此,在構建鏡像的時候,需要額外小心,每一層盡量只包含該層需要添加的東西,任何額外的東西應該在該層構建結束前清理掉。
???????分層存儲的特征還使得鏡像的復用、定制變的更為容易。甚至可以用之前構建好的鏡像作為基礎層,然后進一步添加新的層,以定制自己所需的內容,構建新的鏡像。、
2)容器
???????鏡像和容器的關系,就像面向對象編程里的類和實例:鏡像是靜態的模板,容器是鏡像運行起來的實體,能被創建、啟動、停止、刪除等。
???????容器本質是進程,但它運行在獨立的命名空間中,有自己的 root 文件系統、網絡配置、進程空間等,就像在獨立系統中操作,比直接在宿主運行更安全,這也讓初學者易與虛擬機混淆。
???????容器和鏡像一樣采用分層存儲,運行時以鏡像為基礎層,再創建一個容器存儲層供讀寫。容器存儲層隨容器消亡而消失,所以里面的信息會跟著容器刪除而丟失。
???????按 Docker 最佳實踐,容器存儲層要保持無狀態,不寫入數據。文件寫入應使用數據卷或綁定宿主目錄,這樣能跳過容器存儲層,直接操作宿主或網絡存儲,性能和穩定性更好。而且數據卷生命周期獨立于容器,容器沒了,數據卷里的數據也不會丟失。
3)倉庫
???????鏡像構建完成后,可以很容易的在當前宿主機上運行,但是,如果需要在其它服務器上使用這個鏡像,我們就需要一個集中的存儲、分發鏡像的服務,Docker Registry 就是這樣的服務。
???????一個 Docker Registry 中可以包含多個倉庫(Repository);每個倉庫可以包含多個標簽(Tag);而每個標簽對應一個鏡像。
???????通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標簽就常用于對應該軟件的各個版本。我們可以通過 <倉庫名>:<標簽> 的格式來指定具體是這個軟件哪個版本的鏡像。如果不給出標簽,將以 latest 作為默認標簽。
???????以 Ubuntu 鏡像為例,ubuntu 是倉庫的名字,其內包含有不同的版本標簽,如:16.04, 18.04。我們可以通過 ubuntu:16.04,或者 ubuntu:18.04 來具體指定所需哪個版本的鏡像。如果忽略了標簽,比如 ubuntu,那將視為 ubuntu:latest。
???????倉庫名經常以兩段式路徑形式出現,比如 jwilder/nginx-proxy,前者往往意味著 Docker Registry 多用戶環境下的用戶名,后者則往往是對應的軟件名。但這并非絕對,取決于所使用的具體 Docker Registry 的軟件或服務。
參考鏈接(如有侵權,請聯系刪除):
一文說清 Docker 是什么(非常詳細),零基礎入門到精通,看這一篇就夠了-CSDN博客
二、基于Ubuntu下的Docker安裝步驟
1.查看是否已經安裝了Docker,如果安裝則刪除舊版本
#查看Docker版本
docker --version#刪除舊版本
sudo apt-get remove docker docker-engine docker.io containerd runc
2.安裝下載Docker時需要的依賴
#更新 apt 包索引
sudo apt-get update#安裝相關軟件包以允許 apt 通過 HTTPS 使用 docker 存儲庫
sudo apt-get install ca-certificates curl gnupg lsb-release
3.使用存儲庫安裝 Docker
????為什么使用存儲庫安裝 Docker?
- 自動解決依賴:Docker 依賴于多個系統組件(如
containerd
、runc
),存儲庫安裝會自動處理這些依賴關系。 - 版本管理:通過存儲庫可以輕松安裝、升級或降級軟件版本,且支持自動更新。
- 安全性:官方存儲庫的軟件包經過簽名驗證,確保來源可信。
- 標準化流程:所有 Linux 發行版都支持通過存儲庫安裝軟件,操作統一。
(1)添加 Docker 的官方 GPG 密鑰
# 1. 創建存放GPG密鑰的目錄
sudo mkdir -p /etc/apt/keyrings# 2. 下載Docker官方GPG密鑰并保存
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
第一條命令:創建存放 GPG 密鑰的目錄
參數解析
-
sudo
以超級用戶(root)權限執行命令,因為/etc
目錄通常只有 root 用戶可寫。 -
mkdir
創建目錄的命令(Make Directory)。 -
-p
遞歸創建父目錄。如果/etc/apt/keyrings
的上級目錄(如/etc/apt
)不存在,會自動創建它們。
例如:若/etc/apt
不存在,會先創建/etc/apt
,再創建/etc/apt/keyrings
。 -
/etc/apt/keyrings
目標目錄路徑。/etc/apt
:Debian 系 Linux 存放軟件源配置的目錄。keyrings
:專門用于存放 GPG 密鑰環的子目錄(從 APT 2.4 版本開始推薦)。
?第二條命令:下載并保存 Docker 官方 GPG 密鑰
管道前半部分:curl -fsSL [...]
-
curl
用于發送 HTTP 請求、下載文件的命令行工具。 -
-f
(--fail
)
若 HTTP 請求返回錯誤狀態碼(如 404、500),立即終止并返回錯誤,避免輸出錯誤頁面內容。 -
-s
(--silent
)
靜默模式,不顯示進度條和錯誤信息(但-S
會覆蓋此選項,顯示錯誤)。 -
-S
(--show-error
)
與-s
配合使用,即使靜默模式也顯示錯誤信息。 -
-L
(--location
)
若服務器返回重定向(如 301、302),自動跟隨重定向到新 URL。 -
https://download.docker.com/linux/ubuntu/gpg
Docker 官方提供的 GPG 公鑰下載地址,用于驗證軟件包的簽名。
管道后半部分:sudo gpg --dearmor -o [...]
-
gpg
GNU Privacy Guard,用于加密、簽名和驗證的工具。 -
--dearmor
將 ASCII 格式的 GPG 密鑰(文本形式)轉換為二進制格式(.gpg
文件)。
例如,下載的原始密鑰是:
plaintext
-----BEGIN PGP PUBLIC KEY BLOCK-----
...(長文本)...
-----END PGP PUBLIC KEY BLOCK-----
-
轉換后變為二進制格式,便于 APT 系統讀取。
-
-o /etc/apt/keyrings/docker.gpg
-o
(--output
):指定輸出文件路徑。
將轉換后的二進制密鑰保存為/etc/apt/keyrings/docker.gpg
。
為什么需要這兩步?
-
安全性
GPG 密鑰用于驗證軟件包是否由 Docker 官方發布,防止中間人攻擊或篡改。 -
兼容性
從 APT 2.4 版本開始,推薦將密鑰存放在/etc/apt/keyrings/
目錄,并在軟件源配置中用signed-by
指定密鑰路徑。 -
自動化
通過命令自動下載和配置密鑰,避免手動操作可能的錯誤。
驗證配置結果
bash
# 檢查目錄是否創建成功
ls -ld /etc/apt/keyrings# 檢查密鑰文件是否存在且正確
ls -l /etc/apt/keyrings/docker.gpg
gpg --show-keys /etc/apt/keyrings/docker.gpg
正常情況下,密鑰文件權限應為 -rw-r--r--
(644),且能顯示密鑰的指紋信息(如 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
)。
(2)設置存儲庫
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee -a /etc/apt/sources.list.d/docker.list > /dev/null
逐段解析:
1. echo "deb [...]"
echo
:輸出字符串到標準輸出deb [...]
:這是 APT 軟件源配置的格式,告訴系統從哪里下載軟件包
2. [arch=$(dpkg --print-architecture)]
arch=
:指定軟件包的架構(如 amd64、arm64)dpkg --print-architecture
:自動獲取當前系統的架構- 例如在 x86_64 系統上會輸出
amd64
- 在 ARM64 系統上會輸出
arm64
- 例如在 x86_64 系統上會輸出
- 作用:確保只下載與當前系統架構匹配的軟件包
3. signed-by=/etc/apt/keyrings/docker.gpg
signed-by
:指定用于驗證軟件包簽名的 GPG 密鑰/etc/apt/keyrings/docker.gpg
:Docker 官方 GPG 密鑰的路徑- 作用:防止軟件包被篡改,確保來源可信
4. https://download.docker.com/linux/ubuntu
- Docker 官方軟件源的基礎 URL
- Ubuntu 系統的 Docker 軟件包都存放在這個服務器上
5. $(lsb_release -cs)
lsb_release -cs
:獲取當前 Ubuntu 系統的版本代號(Codename)- 例如 Ubuntu 22.04 的代號是
jammy
- Ubuntu 20.04 的代號是
focal
- 例如 Ubuntu 22.04 的代號是
- 作用:自動適配不同版本的 Ubuntu,確保下載的軟件包兼容
6. stable
- Docker 軟件源的通道(channel)
stable
:穩定版(推薦生產環境使用)- 其他可選通道:
edge
(測試版)、nightly
(開發版)
7. | sudo tee -a /etc/apt/sources.list.d/docker.list
|
:管道符號,將前面的輸出作為后面命令的輸入sudo tee -a
:tee
:將輸出同時寫入文件和屏幕-a
:追加模式(append),不覆蓋原有內容sudo
:以管理員權限執行
/etc/apt/sources.list.d/docker.list
:APT 軟件源配置文件- APT 會自動讀取這個目錄下的所有
.list
文件
- APT 會自動讀取這個目錄下的所有
8. > /dev/null
>
:重定向符號/dev/null
:Linux 的黑洞設備,所有寫入的數據都會被丟棄- 作用:隱藏命令的輸出(不顯示在終端)
總結
這個命令的核心作用是:
- 自動生成 Docker 官方軟件源的配置
- 將配置寫入
/etc/apt/sources.list.d/docker.list
文件 - 配置會根據當前系統架構和版本自動適配
- 使用 Docker 官方 GPG 密鑰確保軟件包安全
4.安裝 Docker engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
5.驗證安裝是否完成
sudo docker -v
注:拉取鏡像除了使用VPN,還可以配置到國內的鏡像源進行拉取;Docker桌面版沒怎么用,暫不介紹。