安装 Docker 时,为什么要装 dnf-utils?

在 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-managerdnf-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 配置仓库" 是更稳妥的选择。

相关推荐
代码讲故事4 分钟前
Redis生产环境批量的key需要删除,如何优雅实现且不影响线上环境?有密码认证的如何实现批量删除?有哪些实现方法?
运维·redis·缓存·高并发·删除·批量·生产环境
MXsoft61831 分钟前
**配置文件频繁变更导致故障?版本控制****+****合规检查必不可少**
运维
gjc59233 分钟前
Linux MySQL服务器SSH多端口配置:解决22端口禁直连,兼顾安全与运维
linux·运维·服务器·mysql·ssh
susu108301891137 分钟前
docker启动PostgreSQL + TimescaleDB 时序数据库
docker·postgresql·时序数据库
wzl2026121341 分钟前
基于企业微信开放API,实现SCRM核心客户标签自动化管理系统
运维·自动化·企业微信
Hui_AI7201 小时前
电商桌面自动化实战:用RPA实现抖店批量铺货
运维·开发语言·人工智能·自然语言处理·自动化·开源软件·rpa
红茶要加冰1 小时前
三、条件测试
linux·运维·服务器
开开心心就好1 小时前
带可视化界面的目录文件合并工具
java·运维·科技·游戏·tomcat·自动化·powerpoint
爱喝水的鱼丶1 小时前
SAP-ABAP:第二篇:实操避坑篇——ABAP Hello World程序创建、语法校验到调试运行全流程指南
运维·服务器·数据库·学习·sap·abap
wanderist.1 小时前
完美解决VS Code/Cursor远程连接报错:远程主机不满足运行 VS Code 服务器的先决条件(附AI编程最佳实践)
运维·服务器·ssh·ai编程