🧾 文章摘要
本文介绍了如何在 CentOS 7 操作系统上完成 Docker 引擎的一键安装与配置,包括:
关闭防火墙与 SELinux;
替换阿里云 YUM 源;
安装最新版 Docker CE;
配置国内镜像加速器;
设置开机自启等关键步骤。
适用于初学者、运维人员及 DevOps 工程师快速搭建 Docker 运行环境。
一、适用对象
本文适合以下读者:
刚接触 Linux 服务器管理的新手;
需要快速部署 Docker 环境的开发或测试人员;
希望优化镜像拉取速度的用户;
对自动化部署脚本感兴趣的读者。
🛠️ 二、部署流程详解
1. 关闭防火墙并禁用 SELinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's|SELINUX=enforcing|SELINUX=disabled|g' /etc/selinux/config
2. 备份原 YUM 源并替换为阿里云源
cp -rf /etc/yum.repos.d /etc/yum.repos.d.bak
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all && yum makecache
3. 安装常用工具包
yum -y install bash* wget vim lsof unzip dos2unix net-tools
yum -y install yum-utils device-mapper-persistent-data lvm2
4. 添加 Docker CE 官方源并安装
# 添加docker-ce的yum源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 卸载旧版本
yum -y remove docker docker-ce docker-ce-cli containerd.io docker.io containerd runc docker-client docker-latest docker-client-latest docker-selinux docker-common docker-engine docker-logrotate docker-latest-logrotate docker-compose-plugin
# 安装最新版本
yum -y install docker-ce docker-ce-cli containerd.io
# 查看当前版本
docker -v
当你尝试使用 yum 或 dnf 安装 RPM 包时,系统检测到该 RPM 包由 GPG 签名签名,但当前系统中未安装对应的 GPG 公钥,因此无法验证包的完整性与来源。
docker-buildx-plugin-0.14.1-1.el7.x86_64.rpm 的公钥尚未安装
✅ 解决方法
🔧 导入 Docker 的官方 GPG 公钥(推荐)
下载并导入 Docker 的官方 GPG 公钥:
# 安装最新版本
yum -y install docker-ce docker-ce-cli containerd.io
# 查看当前版本
docker -v
再执行一遍
sudo rpm --import https://download.docker.com/linux/centos/gpg
启动 Docker 并设置开机自启
# 启动并配置开机自启
systemctl start docker
systemctl enable docker
6. 配置国内镜像加速器(推荐)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors" : ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc",
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://dockerproxy.com",
"https://gst6rzl9.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"http://mirrors.ustc.edu.cn/",
"https://mirrors.tuna.tsinghua.edu.cn/",
"http://mirrors.sohu.com/"
],
"insecure-registries" : [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"debug": true,
"experimental": false
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
7. 重启 Docker 服务以应用配置
sudo systemctl daemon-reload
sudo systemctl restart docker
三、验证是否配置成功
docker info | grep Mirrors -A 2
输出示例如下表示配置成功
Registry Mirrors:
https://docker.m.daocloud.io/
🧪 四、常见问题解答(FAQ)
Q1:输入 docker search xxx指令的时候,出现了连接超时的情况,但是拉取命令没问题 docker pull xx可以成功。
Error response from daemon: Get "https://index.docker.io/v1/search?q=nacos&n=25": dial tcp 154.83.14.134:443: i/o timeout
原因由于命令行中 docker search 不支持镜像加速器,Docker 的 search 和 login 等操作默认直接访问 Docker Hub(index.docker.io),不经过镜像加速器。
方法1:使用浏览器访问 Docker Hub 搜索镜像(推荐)
方法2:使用第三方工具替代搜索功能
你可以安装并使用 skopeo 或 regclient 工具,它们支持更灵活的 registry 操作,并可通过代理访问。
方法3:禁用或忽略 docker search
如果你只是想确认某个镜像是否存在或获取 tag 列表,可以直接使用 docker pull 拉取已知 tag,或者通过浏览器访问对应的项目页面。
Q2: 配置镜像加速后仍然无法拉取镜像怎么办?
检查 /etc/docker/daemon.json 格式是否正确;
尝试更换其他可用的镜像地址;
查看日志:journalctl -u docker.service;
确保没有重复配置 registry-mirror(如在 /etc/default/docker 或 /etc/sysconfig/docker 中)。
📦 五、结语
通过上述步骤,你可以轻松完成 CentOS 7 上 Docker 引擎的安装与配置。整个过程只需复制粘贴即可完成,非常适合用于生产环境的快速部署或 CI/CD 流水线中的初始化脚本。
如果你希望将该脚本封装为 .sh 脚本文件用于批量部署,也可以进一步封装成 Ansible Playbook 或 SaltStack 模块。
📚 六、推荐阅读
Docker 官方文档
Linux 下 Docker 安装与配置最佳实践
📢 七、互动环节
如果你有更高效的部署方式,或者发现某些镜像源已失效,请在评论区留言,我会持续更新此指南!
⭐️ 八、标签推荐
#Docker #CentOS #DevOps #镜像加速 #Linux运维 #一键部署
📝 创作背景:本文由作者在实际项目中总结整理而成,旨在帮助更多开发者快速搭建 Docker 环境,提升部署效率。