在 Docker 官方安裝文檔中,有一個看似不起眼的步驟:安裝 dnf-utils 軟件包。很多人會疑惑:我只是想裝個 Docker,為什麼還要額外裝這個工具?它到底起了什麼作用?今天就來拆解這個細節背後的邏輯。

一、先明確:dnf-utils 不是 Docker 的 “直接依賴”

首先要澄清一個誤區:Docker 本身的運行並不需要 dnf-utils。Docker 的核心組件(docker-cedocker-ce-cli 等)的依賴清單裏並沒有 dnf-utils,即使不裝它,Docker 也能正常啓動和工作。

那為什麼官方文檔還要會要求安裝它?這要從 Docker 的 “安裝方式” 説起。

二、關鍵原因:dnf-utils 是配置 Docker 倉庫的 “工具人”

Docker 官方推薦的安裝方式是 “通過官方倉庫安裝”(而非手動下載 RPM 包),原因有兩個:

(1)倉庫安裝能自動處理依賴,避免手動找包的麻煩;

(2)後續可通過 dnf update 直接一鍵升級 Docker 到最新版本。

而配置第三方倉庫(如 Docker 官方倉庫)時,dnf-utils 中的一個工具成了關鍵 ——yum-config-manager

1. 什麼是 yum-config-manager

yum-config-manager 是 dnf-utils 軟件包提供的倉庫管理工具,它的核心功能是快速添加、啓用、禁用系統的軟件倉庫

在 RHEL/CentOS 系統中,軟件倉庫的配置文件通常存放在 /etc/yum.repos.d/ 目錄下(以 .repo 為後綴)。要添加 Docker 倉庫,本質上就是要在這個目錄下創建一個 docker-ce.repo 配置文件。

2. 沒有 dnf-utils,我們要做什麼?

如果不裝 dnf-utils,想添加 Docker 倉庫,需要手動完成以下步驟:

bash

# 1. 手動下載 Docker 倉庫的配置文件
curl -o docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo

# 2. 手動將文件移動到系統倉庫目錄(需要 root 權限)
sudo mv docker-ce.repo /etc/yum.repos.d/

# 3. 手動確認文件權限是否正確(避免因權限問題導致倉庫不可用)
sudo chmod 644 /etc/yum.repos.d/docker-ce.repo

這一系列操作雖然不復雜,但步驟繁瑣,且容易因手動操作出錯(比如路徑輸錯、權限沒設對)。

3. 有了 dnf-utils,一行命令搞定

yum-config-manager 把上述手動步驟簡化成了一行命令:

bash

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

這條命令會自動完成三件事:

  • 從指定 URL 下載 docker-ce.repo 配置文件;
  • 自動將文件移動到 /etc/yum.repos.d/ 目錄;
  • 自動設置正確的文件權限(無需手動 chmod)。

對於新手來説,這極大降低了操作門檻;對於自動化腳本(如 Ansible)來説,也減少了出錯概率。

三、不裝 dnf-utils 行不行?

當然可以。如前文所説,dnf-utils 只是 “簡化工具”,而非 “必需依賴”。只要能正確創建 /etc/yum.repos.d/docker-ce.repo 文件,不裝它也能順利安裝 Docker。

比如,用 curl 直接下載並輸出到目標路徑(省略手動移動步驟):

bash

sudo curl -o /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo

這條命令的效果和 yum-config-manager --add-repo 完全一致,且無需 dnf-utils

四、官方為什麼推薦裝 dnf-utils

Docker 官方文檔的目標是提供 “普適性最高、出錯率最低” 的安裝方案。相比手動用 curl 寫路徑,yum-config-manager 有兩個優勢:

(1)標準化:它是 RHEL/CentOS 系統中管理倉庫的官方工具,行為更穩定,不會因用户手動操作(如路徑拼寫錯誤)導致異常;

(2)擴展性:除了添加倉庫,yum-config-manager 還能快速啓用 / 禁用倉庫(如 sudo yum-config-manager --disable docker-ce-nightly),方便後續管理。

對於大多數用户(尤其是新手),“安裝 dnf-utils + 用 yum-config-manager 配置倉庫” 是更穩妥的選擇。