一、文档说明
本文档基于 CentOS 10(EL10) 系统编写,同时兼容 CentOS 8/9 等基于 DNF 包管理器的新版 CentOS 系统,覆盖从环境准备、源配置、安装、启动、优化到排错的全流程,适合运维人员、开发人员作为标准化部署手册使用。
二、前置环境要求
1. 系统版本要求
- 支持系统:CentOS 8、CentOS 9、CentOS 10(推荐 CentOS 10,长期支持版本)
- 系统架构:x86_64 架构(主流服务器架构,ARM 架构需单独适配)
- 权限要求:必须使用
root用户或拥有sudo权限的普通用户操作
2. 环境清理(避免旧版本冲突)
在安装前,必须彻底卸载系统中可能存在的旧版 Docker 及相关组件,避免依赖冲突:
bash
# 卸载旧版Docker及相关组件
sudo dnf remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
podman \
runc
说明:CentOS 8+ 系统默认预装
podman,与 Docker 存在端口冲突,必须卸载。
3. 安装基础依赖工具
安装 Docker 所需的系统依赖包,确保后续源配置、安装流程正常执行:
bash
# 安装dnf核心工具包(CentOS 8+ 原生工具,替代旧版yum-utils)
sudo dnf -y install dnf-plugins-core
补充说明:
- 旧版 CentOS 7 使用
yum install -y yum-utils,CentOS 8+ 已完全迁移至 DNF,yum仅为兼容软链接,不推荐使用- 若误装
yum-utils兼容包,可通过sudo dnf remove -y yum-utils卸载,不影响系统核心功能
三、配置 Docker 软件源(国内加速方案)
Docker 官方源服务器在海外,国内访问速度慢、易超时,强烈推荐使用阿里云镜像源,大幅提升安装和镜像拉取速度。
1. 移除旧的 Docker 官方源(若已添加)
若之前执行过官方源添加命令,需先删除旧源文件,避免源冲突:
bash
# 直接删除官方源配置文件(Linux 通用删除源方法,替代不存在的--remove-repo参数)
sudo rm -f /etc/yum.repos.d/docker-ce.repo
2. 添加阿里云 Docker 镜像源
执行以下命令,一键写入阿里云源配置文件:
bash
sudo dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#CentOS7版本
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
源文件说明:
- 源配置文件会自动生成在
/etc/yum.repos.d/docker-ce.repo路径下- 该源完美适配 CentOS 8/9/10 全版本,无需手动修改版本号
- 若需手动编辑源文件,可执行
sudo vi /etc/yum.repos.d/docker-ce.repo,确保baseurl为阿里云地址
3. 刷新系统源缓存
执行缓存刷新命令,确保新添加的源生效:
bash
sudo dnf makecache
执行成功标志:输出各源元数据下载进度,最终显示「缓存创建成功」,无报错信息。
四、安装 Docker 引擎
1. 安装 Docker 核心组件
执行以下命令,安装 Docker 最新稳定版及相关依赖:
bash
# 安装Docker CE(社区版)、CLI工具、containerd容器运行时
sudo dnf -y install docker-ce docker-ce-cli containerd.io
组件说明:
docker-ce:Docker 社区版核心引擎,负责容器生命周期管理docker-ce-cli:Docker 命令行工具,用于执行docker相关操作containerd.io:容器运行时,Docker 20.10+ 版本的标准依赖,负责容器底层管理
2. 验证安装是否成功
安装完成后,执行以下命令验证 Docker 版本,确认安装正常:
bash
# 查看Docker版本
docker --version
# 查看Docker详细信息
docker info
成功标志:
- 输出版本信息(如
Docker version 27.3.1, build ce12230)docker info无报错,正常输出系统资源、镜像源等信息
五、启动与配置 Docker 服务
1. 启动 Docker 服务
执行命令启动 Docker 守护进程:
bash
sudo systemctl start docker
无报错输出即为启动成功(Linux 系统中「无报错 = 执行成功」)
2. 验证 Docker 启动状态
通过两种方式验证 Docker 是否正常运行:
方式 1:查看进程
bash
ps -ef | grep docker
成功标志:输出
dockerd守护进程信息,示例如下:plaintext
root 3105 1 0 14:34 ? 00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock root 3304 2148 0 14:35 pts/0 00:00:00 grep --color=auto docker其中
dockerd进程正常运行,说明 Docker 启动成功。
方式 2:运行测试镜像(官网测试标准)
bash
sudo docker run hello-world
成功标志:输出「Hello from Docker!」欢迎信息,说明 Docker 安装、启动、网络全部正常,可正常拉取镜像、运行容器。
3. 配置 Docker 开机自启
设置 Docker 服务开机自启,确保服务器重启后 Docker 自动运行:
bash
# 设置开机自启
sudo systemctl enable docker
# 验证自启状态
sudo systemctl is-enabled docker
成功标志:输出
enabled,说明自启配置生效。
六、Docker 核心优化配置
1. 配置阿里云镜像加速器(必做)
Docker 官方镜像仓库海外访问速度慢,配置阿里云专属加速器,可将镜像拉取速度提升 10 倍以上。
步骤 1:获取专属加速器地址
-
登录 阿里云容器镜像服务:https://cr.console.aliyun.com/cn-hangzhou/instances
-
左侧菜单选择「镜像工具」→「镜像加速器」
-
复制专属加速器地址(格式:
https://xxxxxx.mirror.aliyuncs.com,每个账号唯一)
步骤 2:配置加速器
执行以下命令,写入加速器配置:
bash
# 创建Docker配置目录
sudo mkdir -p /etc/docker
# 写入daemon.json配置文件(替换为你的专属加速器地址)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"storage-driver": "overlay2"
}
EOF
配置说明:
registry-mirrors:配置镜像加速器地址log-driver/log-opts:限制容器日志大小,避免日志占满磁盘storage-driver:指定存储驱动为overlay2(Docker 推荐的高性能存储驱动)
步骤 3:重启 Docker 生效
bash
# 重载systemd配置
sudo systemctl daemon-reload
# 重启Docker服务
sudo systemctl restart docker
步骤 4:验证加速器生效
bash
docker info
成功标志:在输出中找到
Registry Mirrors字段,显示你的阿里云加速器地址,说明配置生效。
2. 非 root 用户免 sudo 执行 Docker(可选)
默认情况下,普通用户执行 docker 命令需要加 sudo,可通过以下配置实现免 sudo 操作:
bash
# 将当前用户添加到docker用户组
sudo usermod -aG docker $USER
# 立即生效(无需重启系统)
newgrp docker
验证:执行
docker ps,无需加sudo即可正常输出,说明配置成功。
3. 配置 Docker 数据目录(可选,生产环境推荐)
默认 Docker 数据目录为 /var/lib/docker,若系统盘空间不足,可迁移至数据盘:
bash
# 1. 停止Docker服务
sudo systemctl stop docker
# 2. 创建新的数据目录(示例:/data/docker)
sudo mkdir -p /data/docker
# 3. 迁移旧数据
sudo rsync -av /var/lib/docker /data/docker
# 4. 备份旧目录
sudo mv /var/lib/docker /var/lib/docker.bak
# 5. 创建软链接
sudo ln -s /data/docker /var/lib/docker
# 6. 启动Docker
sudo systemctl start docker
验证:执行
docker info,查看Docker Root Dir字段,显示新目录即为成功。
七、Docker 常用基础命令(入门必备)
1. 服务管理命令
bash
# 启动Docker
sudo systemctl start docker
# 停止Docker
sudo systemctl stop docker
# 重启Docker
sudo systemctl restart docker
# 查看Docker状态
sudo systemctl status docker
# 设置开机自启
sudo systemctl enable docker
# 取消开机自启
sudo systemctl disable docker
2. 镜像操作命令
bash
# 拉取镜像
docker pull 镜像名:版本号
# 查看本地镜像
docker images
# 删除镜像
docker rmi 镜像ID/镜像名
# 搜索镜像
docker search 镜像名
3. 容器操作命令
bash
# 运行容器
docker run -d --name 容器名 -p 主机端口:容器端口 镜像名
# 查看运行中容器
docker ps
# 查看所有容器(含停止)
docker ps -a
# 停止容器
docker stop 容器ID/容器名
# 启动容器
docker start 容器ID/容器名
# 删除容器
docker rm 容器ID/容器名
# 进入容器
docker exec -it 容器ID /bin/bash
八、常见问题与排错
1. 问题 1:dnf config-manager --remove-repo 报错
报错信息 :dnf config-manager: error: unrecognized arguments: --remove-repo原因 :CentOS 8+ 的 DNF 工具不支持 --remove-repo 参数,该参数仅适用于旧版 YUM。解决方案:直接删除源配置文件:
bash
sudo rm -f /etc/yum.repos.d/docker-ce.repo
2. 问题 2:Docker 启动失败,提示端口冲突
报错信息 :Error starting daemon: listen tcp 0.0.0.0:2375: bind: address already in use原因 :端口 2375 被其他进程占用(常见为 podman)。解决方案:
bash
# 卸载podman
sudo dnf remove -y podman
# 重启Docker
sudo systemctl restart docker
3. 问题 3:镜像拉取超时、速度慢
原因 :未配置国内镜像加速器,使用官方源访问海外服务器超时。解决方案:按本文「配置阿里云镜像加速器」步骤操作,配置国内加速源。
4. 问题 4:普通用户执行 docker 命令报错权限不足
报错信息 :permission denied while trying to connect to the Docker daemon socket原因 :用户未加入 docker 用户组。解决方案:执行免 sudo 配置命令:
bash
sudo usermod -aG docker $USER
newgrp docker
5. 问题 5:Docker 容器日志占满磁盘
原因 :未配置日志限制,容器日志无限增长。解决方案 :按本文「配置阿里云镜像加速器」步骤,在 daemon.json 中添加日志限制配置。
九、总结
本文档完整覆盖了 CentOS 系统 Docker 从环境准备、源配置、安装、启动、优化到排错的全流程。