在CentOS9上安装Docker的完整指南
作者:Lin_Aries_0421
这篇文章主要为大家详细介绍了在CentOS9上安装Docker的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下
1.准备安装环境
(1)禁用防火墙与SELinux
[root@localhost ~]# systemctl disable --now firewalld.service Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service". Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service". [root@localhost ~]# sudo setenforce 0
(2)更改主机名
[root@localhost ~]# hostnamectl set-hostname host1 [root@localhost ~]# bash
2. 永久配置 DNS
CentOS Stream 9 默认用NetworkManager
管理网络,需通过其工具永久配置 DNS:
[root@host1 ~]# nmcli connection show NAME UUID TYPE DEVICE ens160 19689312-b1bb-3a43-8c2d-d316680ab4a5 ethernet ens160 lo 86df2843-123d-41cc-b6ac-1cf41ce141e8 loopback lo
假设连接名称为ens160
,执行以下命令配置 DNS:
[root@host1 ~]# nmcli connection modify ens160 ipv4.dns "8.8.8.8,114.114.114.114" [root@host1 ~]# nmcli connection up ens160
验证 DNS 是否生效:
# 查看当前生效的DNS [root@host1 ~]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 8.8.8.8 nameserver 114.114.114.114 # 再次测试域名解析 [root@host1 ~]# nslookup mirrors.centos.org Server:8.8.8.8 Address:8.8.8.8#53 Non-authoritative answer: mirrors.centos.orgcanonical name = mirrors.fedoraproject.org. mirrors.fedoraproject.orgcanonical name = wildcard.fedoraproject.org. Name:wildcard.fedoraproject.org Address: 38.145.32.21 Name:wildcard.fedoraproject.org Address: 152.2.23.103 Name:wildcard.fedoraproject.org Address: 140.211.169.196 Name:wildcard.fedoraproject.org Address: 8.43.85.67 Name:wildcard.fedoraproject.org Address: 34.211.44.206 Name:wildcard.fedoraproject.org Address: 8.43.85.73 Name:wildcard.fedoraproject.org Address: 152.2.23.104 Name:wildcard.fedoraproject.org Address: 67.219.144.68 Name:wildcard.fedoraproject.org Address: 38.145.32.20 Name:wildcard.fedoraproject.org Address: 2620:52:6:1121:bead:cafe:feed:fed5 Name:wildcard.fedoraproject.org Address: 2606:f640:6000:651::7 Name:wildcard.fedoraproject.org Address: 2606:f640:6000:651::8 Name:wildcard.fedoraproject.org Address: 2620:52:3:1:dead:beef:cafe:fed6 Name:wildcard.fedoraproject.org Address: 2605:bc80:3010:600:dead:beef:cafe:fed9 Name:wildcard.fedoraproject.org Address: 2600:1f14:fad:5c02:5270:306c:35d6:1f81 Name:wildcard.fedoraproject.org Address: 2620:52:3:1:dead:beef:cafe:fed7 Name:wildcard.fedoraproject.org Address: 2604:1580:fe00:0:dead:beef:cafe:fed1 Name:wildcard.fedoraproject.org Address: 2620:52:6:1121:bead:cafe:feed:fed6
3.更换国内镜像源(如阿里云)
(1)备份原有仓库配置
mkdir -p /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
(2)下载阿里云的 CentOS Stream 9 仓库配置
# 下载BaseOS仓库配置 curl -o /etc/yum.repos.d/CentOS-Stream-BaseOS.repo https://mirrors.aliyun.com/repo/Centos-stream-9.repo
(3)清理缓存并重建
yum clean all yum makecache # 生成新的缓存
4. 设置仓库
(1)安装 yum-utils 包
[root@host1 ~]# dnf makecache CentOS Stream 9 - BaseOS (Aliyun) 3.0 MB/s | 8.8 MB 00:02 CentOS Stream 9 - AppStream (Aliyun) 3.8 MB/s | 25 MB 00:06 上次元数据过期检查:0:00:03 前,执行于 2025年09月05日 星期五 16时25分24秒。 元数据缓存已建立。 [root@host1 ~]# dnf install -y yum-utils 上次元数据过期检查:0:00:02 前,执行于 2025年09月05日 星期五 16时26分45秒。 依赖关系解决。 ===================================================================================================== 软件包 架构 版本 仓库 大小 ===================================================================================================== 安装: yum-utils noarch 4.3.0-22.el9 baseos 39 k 事务概要 ===================================================================================================== 安装 1 软件包 总下载:39 k 安装大小:23 k 下载软件包: yum-utils-4.3.0-22.el9.noarch.rpm 113 kB/s | 39 kB 00:00 ----------------------------------------------------------------------------------------------------- 总计 111 kB/s | 39 kB 00:00 CentOS Stream 9 - BaseOS (Aliyun) 3.1 kB/s | 1.6 kB 00:00 导入 GPG 公钥 0x8483C65D: Userid: "CentOS (CentOS Official Signing Key) <security@centos.org>" 指纹: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D 来自: https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official 导入公钥成功 运行事务检查 事务检查成功。 运行事务测试 事务测试成功。 运行事务 准备中 : 1/1 安装 : yum-utils-4.3.0-22.el9.noarch 1/1 运行脚本: yum-utils-4.3.0-22.el9.noarch 1/1 验证 : yum-utils-4.3.0-22.el9.noarch 1/1 已安装: yum-utils-4.3.0-22.el9.noarch 完毕!
(2)添加仓库
[root@host1 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 添加仓库自:https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5. 安装 Docker Engine
[root@host1 ~]# yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 上次元数据过期检查:0:01:31 前,执行于 2025年09月05日 星期五 16时47分16秒。 依赖关系解决。 ===================================================================================================== 软件包 架构 版本 仓库 大小 ===================================================================================================== 安装: containerd.io x86_64 1.7.27-3.1.el9 docker-ce-stable 44 M docker-buildx-plugin x86_64 0.27.0-1.el9 docker-ce-stable 17 M docker-ce x86_64 3:28.4.0-1.el9 docker-ce-stable 21 M docker-ce-cli x86_64 1:28.4.0-1.el9 docker-ce-stable 8.6 M docker-compose-plugin x86_64 2.39.2-1.el9 docker-ce-stable 15 M 安装弱的依赖: docker-ce-rootless-extras x86_64 28.4.0-1.el9 docker-ce-stable 3.4 M 事务概要 ===================================================================================================== 安装 6 软件包 总下载:108 M 安装大小:435 M 确定吗?[y/N]: y 下载软件包: (1/6): docker-buildx-plugin-0.27.0-1.el9.x86_64.rpm 2.4 MB/s | 17 MB 00:06 (2/6): docker-ce-28.4.0-1.el9.x86_64.rpm 2.8 MB/s | 21 MB 00:07 (3/6): docker-ce-rootless-extras-28.4.0-1.el9.x86_64.rpm 2.4 MB/s | 3.4 MB 00:01 (4/6): docker-ce-cli-28.4.0-1.el9.x86_64.rpm 2.7 MB/s | 8.6 MB 00:03 (5/6): docker-compose-plugin-2.39.2-1.el9.x86_64.rpm 3.7 MB/s | 15 MB 00:04 (6/6): containerd.io-1.7.27-3.1.el9.x86_64.rpm 3.2 MB/s | 44 MB 00:13 ----------------------------------------------------------------------------------------------------- 总计 7.8 MB/s | 108 MB 00:13 Docker CE Stable - x86_64 5.6 kB/s | 1.6 kB 00:00 导入 GPG 公钥 0x621E9F35: Userid: "Docker Release (CE rpm) <docker@docker.com>" 指纹: 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35 来自: https://mirrors.aliyun.com/docker-ce/linux/centos/gpg 确定吗?[y/N]: y 导入公钥成功 运行事务检查 事务检查成功。 运行事务测试 事务测试成功。 运行事务 准备中 : 1/1 安装 : docker-buildx-plugin-0.27.0-1.el9.x86_64 1/6 运行脚本: docker-buildx-plugin-0.27.0-1.el9.x86_64 1/6 安装 : docker-compose-plugin-2.39.2-1.el9.x86_64 2/6 运行脚本: docker-compose-plugin-2.39.2-1.el9.x86_64 2/6 安装 : docker-ce-cli-1:28.4.0-1.el9.x86_64 3/6 运行脚本: docker-ce-cli-1:28.4.0-1.el9.x86_64 3/6 安装 : containerd.io-1.7.27-3.1.el9.x86_64 4/6 运行脚本: containerd.io-1.7.27-3.1.el9.x86_64 4/6 安装 : docker-ce-rootless-extras-28.4.0-1.el9.x86_64 5/6 运行脚本: docker-ce-rootless-extras-28.4.0-1.el9.x86_64 5/6 安装 : docker-ce-3:28.4.0-1.el9.x86_64 6/6 运行脚本: docker-ce-3:28.4.0-1.el9.x86_64 6/6 验证 : containerd.io-1.7.27-3.1.el9.x86_64 1/6 验证 : docker-buildx-plugin-0.27.0-1.el9.x86_64 2/6 验证 : docker-ce-3:28.4.0-1.el9.x86_64 3/6 验证 : docker-ce-cli-1:28.4.0-1.el9.x86_64 4/6 验证 : docker-ce-rootless-extras-28.4.0-1.el9.x86_64 5/6 验证 : docker-compose-plugin-2.39.2-1.el9.x86_64 6/6 已安装: containerd.io-1.7.27-3.1.el9.x86_64 docker-buildx-plugin-0.27.0-1.el9.x86_64 docker-ce-3:28.4.0-1.el9.x86_64 docker-ce-cli-1:28.4.0-1.el9.x86_64 docker-ce-rootless-extras-28.4.0-1.el9.x86_64 docker-compose-plugin-2.39.2-1.el9.x86_64 完毕!
查看版本:
[root@host1 ~]# docker --version Docker version 28.4.0, build d8eb465
列出所有版本
[root@host1 ~]# yum list docker-ce --showduplicates | sort -r docker-ce.x86_64 3:28.4.0-1.el9 docker-ce-stable docker-ce.x86_64 3:28.4.0-1.el9 @docker-ce-stable docker-ce.x86_64 3:28.3.3-1.el9 docker-ce-stable docker-ce.x86_64 3:28.3.2-1.el9 docker-ce-stable docker-ce.x86_64 3:28.3.1-1.el9 docker-ce-stable docker-ce.x86_64 3:28.3.0-1.el9 docker-ce-stable docker-ce.x86_64 3:28.2.2-1.el9 docker-ce-stable docker-ce.x86_64 3:28.2.1-1.el9 docker-ce-stable docker-ce.x86_64 3:28.2.0-1.el9 docker-ce-stable docker-ce.x86_64 3:28.1.1-1.el9 docker-ce-stable docker-ce.x86_64 3:28.1.0-1.el9 docker-ce-stable docker-ce.x86_64 3:28.0.4-1.el9 docker-ce-stable docker-ce.x86_64 3:28.0.3-1.el9 docker-ce-stable docker-ce.x86_64 3:28.0.2-1.el9 docker-ce-stable docker-ce.x86_64 3:28.0.1-1.el9 docker-ce-stable docker-ce.x86_64 3:28.0.0-1.el9 docker-ce-stable docker-ce.x86_64 3:27.5.1-1.el9 docker-ce-stable docker-ce.x86_64 3:27.5.0-1.el9 docker-ce-stable docker-ce.x86_64 3:27.4.1-1.el9 docker-ce-stable docker-ce.x86_64 3:27.4.0-1.el9 docker-ce-stable docker-ce.x86_64 3:27.3.1-1.el9 docker-ce-stable docker-ce.x86_64 3:27.3.0-1.el9 docker-ce-stable docker-ce.x86_64 3:27.2.1-1.el9 docker-ce-stable docker-ce.x86_64 3:27.2.0-1.el9 docker-ce-stable docker-ce.x86_64 3:27.1.2-1.el9 docker-ce-stable docker-ce.x86_64 3:27.1.1-1.el9 docker-ce-stable docker-ce.x86_64 3:27.1.0-1.el9 docker-ce-stable docker-ce.x86_64 3:27.0.3-1.el9 docker-ce-stable docker-ce.x86_64 3:27.0.2-1.el9 docker-ce-stable docker-ce.x86_64 3:27.0.1-1.el9 docker-ce-stable docker-ce.x86_64 3:26.1.4-1.el9 docker-ce-stable docker-ce.x86_64 3:26.1.3-1.el9 docker-ce-stable docker-ce.x86_64 3:26.1.2-1.el9 docker-ce-stable docker-ce.x86_64 3:26.1.1-1.el9 docker-ce-stable docker-ce.x86_64 3:26.1.0-1.el9 docker-ce-stable docker-ce.x86_64 3:26.0.2-1.el9 docker-ce-stable docker-ce.x86_64 3:26.0.1-1.el9 docker-ce-stable docker-ce.x86_64 3:26.0.0-1.el9 docker-ce-stable docker-ce.x86_64 3:25.0.5-1.el9 docker-ce-stable docker-ce.x86_64 3:25.0.4-1.el9 docker-ce-stable docker-ce.x86_64 3:25.0.3-1.el9 docker-ce-stable docker-ce.x86_64 3:25.0.2-1.el9 docker-ce-stable docker-ce.x86_64 3:25.0.1-1.el9 docker-ce-stable docker-ce.x86_64 3:25.0.0-1.el9 docker-ce-stable docker-ce.x86_64 3:24.0.9-1.el9 docker-ce-stable docker-ce.x86_64 3:24.0.8-1.el9 docker-ce-stable docker-ce.x86_64 3:24.0.7-1.el9 docker-ce-stable docker-ce.x86_64 3:24.0.6-1.el9 docker-ce-stable docker-ce.x86_64 3:24.0.5-1.el9 docker-ce-stable docker-ce.x86_64 3:24.0.4-1.el9 docker-ce-stable docker-ce.x86_64 3:24.0.3-1.el9 docker-ce-stable docker-ce.x86_64 3:24.0.2-1.el9 docker-ce-stable docker-ce.x86_64 3:24.0.1-1.el9 docker-ce-stable docker-ce.x86_64 3:24.0.0-1.el9 docker-ce-stable docker-ce.x86_64 3:23.0.6-1.el9 docker-ce-stable docker-ce.x86_64 3:23.0.5-1.el9 docker-ce-stable docker-ce.x86_64 3:23.0.4-1.el9 docker-ce-stable docker-ce.x86_64 3:23.0.2-1.el9 docker-ce-stable docker-ce.x86_64 3:23.0.1-1.el9 docker-ce-stable docker-ce.x86_64 3:23.0.0-1.el9 docker-ce-stable docker-ce.x86_64 3:20.10.24-3.el9 docker-ce-stable docker-ce.x86_64 3:20.10.23-3.el9 docker-ce-stable docker-ce.x86_64 3:20.10.22-3.el9 docker-ce-stable docker-ce.x86_64 3:20.10.21-3.el9 docker-ce-stable docker-ce.x86_64 3:20.10.20-3.el9 docker-ce-stable docker-ce.x86_64 3:20.10.19-3.el9 docker-ce-stable docker-ce.x86_64 3:20.10.18-3.el9 docker-ce-stable docker-ce.x86_64 3:20.10.17-3.el9 docker-ce-stable docker-ce.x86_64 3:20.10.16-3.el9 docker-ce-stable docker-ce.x86_64 3:20.10.15-3.el9 docker-ce-stable 已安装的软件包 上次元数据过期检查:0:05:43 前,执行于 2025年09月05日 星期五 16时47分16秒。 可安装的软件包
选择版本安装
yum install docker-ce-版本号 #后面一样操作
6. 启动并测试
[root@host1 ~]# systemctl start docker [root@host1 ~]# docker run hello-world #运行 hello-world 镜像验证 Unable to find image 'hello-world:latest' locally docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded Run 'docker run --help' for more information
报错修改:
(1)检查网络后发现自己的阿里镜像加速器用不了了,现在换成华为镜像加速器
[root@host1 ~]# vi /etc/docker/daemon.json [root@host1 ~]# cat /etc/docker/daemon.json { "registry-mirrors": ["https://9fbd5949cbc94e4a9581e33b9077c811.mirror.swr.myhuaweicloud.com"] }
(2)重启 Docker 生效
[root@host1 ~]# sudo systemctl daemon-reload [root@host1 ~]# sudo systemctl restart docker
(3)验证 Docker 是否完全正常工作:
[root@host1 ~]# docker pull hello-world #可以不用这步操作 Using default tag: latest latest: Pulling from library/hello-world 17eec7bbc9d7: Pull complete Digest: sha256:a0dfb02aac212703bfcb339d77d47ec32c8706ff250850ecc0e19c8737b18567 Status: Downloaded newer image for hello-world:latest docker.io/library/hello-world:latest [root@host1 ~]# docker run hello-world Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
太棒了!从输出结果可以确认,Docker 已经完全正常工作了!
“Hello from Docker!” 的欢迎信息表明:
- Docker 客户端与守护进程(daemon)通信正常;
- 镜像加速器配置生效,成功拉取了
hello-world
镜像; - 容器能够正常创建、运行并输出内容。
7. 镜像加速配置操作示例(阿里镜像加速配置)
(1)创建配置文件
sudo mkdir -p /etc/docker
(2)写入阿里云加速配置
tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://jnh8ca4k.mirror.aliyuncs.com"] } EOF
(3)重启服务生效
sudo systemctl daemon-reload sudo systemctl restart docker
8.配置 Docker 开机自动启动
[root@host1 ~]# sudo systemctl enable docker.service Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service. [root@host1 ~]# sudo systemctl enable containerd.service Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service → /usr/lib/systemd/system/containerd.service.
关键注意事项
生产环境操作前建议创建系统快照
避免直接使用sudo rm -rf清理目录(除非确认无重要数据)
定期执行dnf update保持组件更新
以上就是在CentOS9上安装Docker的完整指南的详细内容,更多关于CentOS9安装Docker的资料请关注脚本之家其它相关文章!