1. CentOS 7 Docker 完整安装指南(2024年最新版)
作为在Linux系统运维领域深耕多年的老手,我见证了Docker从新兴技术到行业标准的演变过程。虽然CentOS 7已经结束生命周期,但考虑到国内仍有大量存量系统需要维护,今天我将分享一套经过实战检验的Docker安装方案,包含你可能在其他教程里找不到的细节处理。
1.1 环境准备与系统要求
在开始安装前,我们需要确保系统环境符合Docker的运行要求。CentOS 7虽然老旧,但经过适当配置仍能稳定运行Docker容器。
1.1.1 硬件与系统要求
- 操作系统:CentOS 7.x(建议7.6及以上)
- 内核版本:3.10.0-693.el7.x86_64或更高
- 存储空间:至少20GB可用空间
- 内存:建议2GB以上(生产环境至少4GB)
重要提示:执行
uname -r可查看当前内核版本。如果内核版本过低,建议先升级内核:yum update kernel -y&&reboot
1.1.2 网络环境检查
Docker的正常运行依赖网络连接,特别是后续拉取镜像时:
bash复制ping -c 4 www.baidu.com # 测试外网连通性
curl -I https://download.docker.com # 检查Docker仓库可达性
如果出现网络问题,需要先解决网络配置或代理设置。
2. 安装前的系统准备
2.1 修复Yum源(关键步骤)
由于CentOS 7官方源已停止维护,我们需要切换镜像源。以下是国内常用源配置:
bash复制# 备份原有repo文件
mkdir -p /etc/yum.repos.d/backup && mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/backup/
# 配置阿里云镜像源
cat > /etc/yum.repos.d/CentOS-Base.repo <<EOF
[base]
name=CentOS-7 - Base - mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-7 - Updates - mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos/7/updates/x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
EOF
# 清理并重建缓存
yum clean all && yum makecache
2.2 系统更新与依赖安装
建议执行完整系统更新(耗时较长但能避免后续兼容性问题):
bash复制yum update -y && yum install -y yum-utils device-mapper-persistent-data lvm2
实测经验:在老旧硬件上更新时,建议添加
--skip-broken参数避免单个包失败导致整个更新中断
3. Docker安装全流程
3.1 卸载旧版本(如有)
bash复制yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
rm -rf /var/lib/docker
3.2 添加Docker官方仓库
bash复制yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.3 安装特定版本Docker(推荐生产环境使用)
查看可用版本:
bash复制yum list docker-ce --showduplicates | sort -r
安装指定版本(示例安装20.10.17):
bash复制yum install -y docker-ce-20.10.17 docker-ce-cli-20.10.17 containerd.io
版本选择建议:生产环境避免使用latest标签,建议选择次新版以获得稳定性与安全性的平衡
3.4 启动与验证
bash复制systemctl start docker
systemctl enable docker
docker run hello-world # 验证安装
如果看到"Hello from Docker!"消息,说明基础环境已就绪。
4. 安装后关键配置
4.1 用户权限配置(安全加固)
将普通用户加入docker组(示例用户为devuser):
bash复制usermod -aG docker devuser
newgrp docker # 立即生效无需重新登录
安全警告:docker组权限等同于root,仅可信任用户应加入该组
4.2 镜像加速配置(国内必备)
创建或修改/etc/docker/daemon.json:
json复制{
"registry-mirrors": [
"https://registry.cn-hangzhou.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
重启服务生效:
bash复制systemctl daemon-reload
systemctl restart docker
4.3 资源限制配置
修改/etc/systemd/system/docker.service.d/override.conf:
ini复制[Service]
MemoryLimit=4G
CPUQuota=200%
应用配置:
bash复制systemctl daemon-reload
systemctl restart docker
5. 常见问题深度排查
5.1 服务启动失败分析
查看详细日志:
bash复制journalctl -xe -u docker --no-pager
常见原因及解决方案:
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| Failed to start Docker Application Container Engine | 内核模块缺失 | 执行modprobe overlay并添加overlay到/etc/modules-load.d |
| Cannot connect to the Docker daemon | 权限问题 | 使用sudo或确保用户在docker组 |
| No space left on device | 存储空间不足 | 清理镜像或修改存储路径 |
5.2 镜像拉取超时处理
临时使用HTTP拉取(不推荐长期使用):
bash复制mkdir -p /etc/systemd/system/docker.service.d
cat > /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
EOF
systemctl daemon-reload
systemctl restart docker
5.3 磁盘空间管理
查看磁盘使用:
bash复制docker system df
定期清理(危险操作,确保无重要数据):
bash复制docker system prune -a -f --volumes
6. 生产环境最佳实践
6.1 安全加固措施
- 启用用户命名空间隔离:
bash复制echo "{\"userns-remap\": \"default\"}" > /etc/docker/daemon.json
- 禁用特权容器(在编排文件中设置):
yaml复制securityContext:
privileged: false
6.2 日志管理方案
配置日志轮转:
bash复制cat > /etc/docker/daemon.json <<EOF
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
EOF
6.3 监控方案实现
安装cAdvisor:
bash复制docker run -d \
--name=cadvisor \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
google/cadvisor:latest
7. 迁移建议与替代方案
虽然本文详细介绍了CentOS 7下的Docker安装,但考虑到系统已EOL,建议新项目考虑以下方案:
- 最小化迁移方案:
bash复制# 使用CentOS 7兼容的第三方源
yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
- 长期解决方案:
- 迁移至Rocky Linux 9/AlmaLinux 9
- 考虑直接使用Docker Desktop for Linux
附录:运维常用命令速查
容器生命周期管理
bash复制docker start/stop/restart <container> # 启停容器
docker pause/unpause <container> # 暂停/恢复
docker rm -f <container> # 强制删除
故障排查命令
bash复制docker logs -f --tail 100 <container> # 实时日志
docker exec -it <container> /bin/bash # 进入容器
docker inspect <container> | grep -i error # 检查配置
资源监控
bash复制docker stats # 实时资源占用
docker top <container> # 容器内进程
经过多年运维实践,我发现Docker的稳定性很大程度上取决于初始安装的规范性。特别是在CentOS 7这种老旧系统上,严格按照上述步骤操作可以避免90%的后期运行问题。对于生产环境,建议在部署前先在测试环境验证所有配置。