跳到主要内容CentOS 7 Docker CE 安装与配置指南 | 极客日志Shell / Bash
CentOS 7 Docker CE 安装与配置指南
CentOS 7 Docker CE 安装与配置指南。由于 CentOS 7 已停止维护,需先修复 Yum 源至 Vault 镜像。步骤包括卸载旧版本、安装依赖、添加阿里云 Docker 仓库、安装 Docker Engine 及 Compose 插件。提供自动化安装脚本以简化流程。安装后需配置用户权限、镜像加速器(如中科大、腾讯云)、日志限制及资源管理。常见问题涵盖服务启动失败、镜像拉取慢、容器网络及磁盘空间不足等排查方案。建议结合最佳实践进行安全加固与监控维护,并规划向新系统迁移。
链路追踪4.2K 浏览 CentOS 7 Docker 完整安装指南
环境说明
系统要求
- 操作系统:CentOS 7.x(64 位)
- 内核版本:3.10 及以上
- 硬件要求:
- CPU:2 核及以上
- 内存:2GB 及以上
- 磁盘:20GB 及以上可用空间
版本信息
- Docker CE(Community Edition)
- Docker Compose V2(作为插件)
- Containerd 运行时
安装前的准备工作
1. 修复 CentOS 7 Yum 源
由于 CentOS 7 已经 EOL,原有的镜像源已无法使用,需要先切换到 vault 源。
创建修复脚本 fix_centos7_repo.sh:
#!/bin/bash
if [ "$EUID" -ne 0 ]; then
echo "请使用 root 用户运行"
exit 1
fi
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
cat > /etc/yum.repos.d/CentOS-Base.repo <<'EOF'
[base]
name=CentOS-7 - Base
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-7 - Updates
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-7 - Extras
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7
EOF
yum clean all
yum makecache
echo "Yum 源修复完成!"
chmod +x fix_centos7_repo.sh
sudo ./fix_centos7_repo.sh
2. 检查系统环境
cat /etc/centos-release
uname -r
uname -m
3. 更新系统(可选)
Docker 安装步骤
步骤 1:卸载旧版本
sudo yum remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
docker-ce \
docker-ce-cli \
containerd.io
步骤 2:安装依赖包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum-utils:提供 yum-config-manager 工具
device-mapper-persistent-data:设备映射器存储驱动
lvm2:逻辑卷管理器
步骤 3:添加 Docker 官方 Yum 源
sudo yum-config-manager --add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
步骤 4:查看可用版本
yum list docker-ce --showduplicates | sort -r
步骤 5:安装 Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
docker-ce:Docker 引擎
docker-ce-cli:Docker 命令行工具
containerd.io:容器运行时
docker-buildx-plugin:多平台构建工具
docker-compose-plugin:Docker Compose V2
步骤 6:启动 Docker
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
步骤 7:验证安装
docker --version
docker info
sudo docker run hello-world
如果看到 'Hello from Docker!' 消息,说明安装成功!
完整安装脚本
为了简化安装过程,我编写了一个完整的自动化安装脚本。
#!/bin/bash
echo "=================================="
echo "CentOS 7 Docker 安装脚本"
echo "=================================="
if [ "$EUID" -ne 0 ]; then
echo "错误:请使用 root 用户或 sudo 运行此脚本"
exit 1
fi
echo "正在检查系统版本..."
if [ ! -f /etc/centos-release ]; then
echo "错误:此脚本仅适用于 CentOS 7"
exit 1
fi
centos_version=$(cat /etc/centos-release | grep -oP '\d+' | head -1)
if [ "$centos_version" != "7" ]; then
echo "错误:此脚本仅适用于 CentOS 7,当前版本:$centos_version"
exit 1
fi
echo "系统版本检查通过:CentOS 7"
echo ""
echo "正在检查并卸载旧版本的 Docker..."
yum remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
docker-ce \
docker-ce-cli \
containerd.io
echo "旧版本清理完成"
echo ""
echo "正在安装必要的依赖包..."
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
if [ $? -ne 0 ]; then
echo "错误:依赖包安装失败,请检查 yum 源配置"
exit 1
fi
echo "依赖包安装完成"
echo ""
echo "正在添加 Docker CE yum 源(阿里云镜像)..."
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
echo "Docker yum 源配置完成"
echo ""
echo "正在更新 yum 缓存..."
yum makecache fast
echo "可用的 Docker CE 版本:"
yum list docker-ce --showduplicates | sort -r | head -10
echo ""
echo "正在安装 Docker CE(最新稳定版)..."
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
if [ $? -ne 0 ]; then
echo "错误:Docker 安装失败"
exit 1
fi
echo "Docker 安装完成"
echo ""
echo "正在启动 Docker 服务..."
systemctl start docker
if [ $? -ne 0 ]; then
echo "错误:Docker 服务启动失败"
exit 1
fi
echo "正在设置 Docker 开机自启..."
systemctl enable docker
echo ""
echo "=================================="
echo "验证 Docker 安装..."
echo "=================================="
docker_version=$(docker --version)
if [ $? -eq 0 ]; then
echo "✓ Docker 版本:$docker_version"
else
echo "✗ Docker 安装验证失败"
exit 1
fi
echo ""
echo "正在运行 hello-world 测试容器..."
docker run --rm hello-world
if [ $? -eq 0 ]; then
echo ""
echo "=================================="
echo "✓ Docker 安装成功!"
echo "=================================="
else
echo ""
echo "=================================="
echo "✗ Docker 测试失败"
echo "=================================="
exit 1
fi
echo ""
echo "是否配置 Docker 镜像加速器?(y/n)"
read -t 10 -p "10 秒后将自动跳过:" configure_mirror
if [ "$configure_mirror" = "y" ] || [ "$configure_mirror" = "Y" ]; then
echo "正在配置 Docker 镜像加速器..."
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.ccs.tencentyun.com"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"storage-driver": "overlay2"
}
EOF
echo "正在重启 Docker 服务..."
systemctl daemon-reload
systemctl restart docker
echo "✓ Docker 镜像加速器配置完成"
fi
echo ""
echo "=================================="
echo "Docker 系统信息"
echo "=================================="
docker info | grep -E "Server Version|Storage Driver|Registry Mirrors" || docker info
echo ""
echo "=================================="
echo "安装完成!"
echo "=================================="
echo ""
echo "常用 Docker 命令:"
echo " docker ps # 查看运行中的容器"
echo " docker images # 查看本地镜像"
echo " docker pull <镜像名> # 拉取镜像"
echo " docker run <镜像名> # 运行容器"
echo " docker compose up -d # 使用 docker-compose 启动服务"
echo ""
echo "提示:"
echo " 1. 非 root 用户需要加入 docker 组才能使用 docker 命令"
echo " 命令:sudo usermod -aG docker $USER"
echo " 2. CentOS 7 已 EOL,建议迁移到 Rocky Linux 或 AlmaLinux"
echo " 3. Docker 配置文件位置:/etc/docker/daemon.json"
echo ""
使用方法
vi install_docker.sh
chmod +x install_docker.sh
sudo ./install_docker.sh
脚本执行过程中会自动完成所有安装步骤,并在最后进行验证测试。
安装后配置
1. 配置用户权限
默认情况下,只有 root 用户可以执行 Docker 命令。为普通用户添加权限:
sudo usermod -aG docker $USER
newgrp docker
docker ps
2. 配置镜像加速器
为了加速镜像拉取,配置国内镜像源:
创建或编辑 /etc/docker/daemon.json:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.ccs.tencentyun.com",
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
registry-mirrors:镜像加速地址
log-driver 和 log-opts:日志配置,防止日志文件过大
storage-driver:存储驱动,overlay2 性能更好
sudo systemctl daemon-reload
sudo systemctl restart docker
docker info | grep -A 5 "Registry Mirrors"
3. 配置 Docker 资源限制
编辑 /etc/docker/daemon.json,添加资源限制:
{
"registry-mirrors": [...],
"default-ulimits": {
"nofile": { "Name": "nofile", "Hard": 64000, "Soft": 64000 }
},
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 5
}
4. 开启 IPv6 支持(可选)
{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}
常见问题排查
问题 1:Docker 服务启动失败
症状:执行 systemctl start docker 失败
sudo journalctl -xe -u docker
sudo dockerd --validate
sudo rm /etc/docker/daemon.json
sudo systemctl restart docker
问题 2:镜像拉取速度慢
症状:执行 docker pull 速度很慢或超时
- 配置镜像加速器(见上文)
- 检查网络连接
- 尝试不同的镜像源
curl -I https://docker.mirrors.ustc.edu.cn
问题 3:容器无法访问外网
cat /proc/sys/net/ipv4/ip_forward
sudo echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sudo sysctl -p
sudo systemctl restart docker
问题 4:磁盘空间不足
症状:提示 'no space left on device'
docker image prune -a
docker container prune
docker volume prune
docker system prune -a --volumes
docker system df
问题 5:权限问题
症状:非 root 用户执行 docker 命令报权限错误
sudo usermod -aG docker $USER
id -nG | grep docker
问题 6:Yum 源问题
sudo yum clean all
sudo yum makecache
sudo yum repolist
sudo vi /etc/yum.repos.d/CentOS-Base.repo
最佳实践建议
1. 安全加固
sudo chmod 600 /var/run/docker.sock
docker run --user 1000:1000 <image>
docker run --memory="512m" --cpus="1.0" <image>
2. 日志管理
sudo du -sh /var/lib/docker/containers/*/*-json.log
cat > /usr/local/bin/clean-docker-logs.sh <<'EOF'
find /var/lib/docker/containers/ -name "*-json.log" -exec truncate -s 0 {} \;
EOF
chmod +x /usr/local/bin/clean-docker-logs.sh
(crontab -l 2>/dev/null; echo "0 2 * * 0 /usr/local/bin/clean-docker-logs.sh") | crontab -
3. 监控和维护
docker stats
docker events
sudo yum update docker-ce docker-ce-cli containerd.io
4. 备份重要数据
docker run --rm -v volume_name:/data -v $(pwd):/backup \
alpine tar czf /backup/volume_backup.tar.gz -C /data .
docker commit container_name backup_image
docker save backup_image | gzip > backup_image.tar.gz
5. 使用 Docker Compose
对于多容器应用,推荐使用 Docker Compose:
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
restart: unless-stopped
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: mydb
volumes:
- db_data:/var/lib/mysql
restart: unless-stopped
volumes:
db_data:
docker compose up -d
docker compose ps
docker compose down
总结
本文详细介绍了在 CentOS 7 系统上安装 Docker 的完整流程,包括:
- 系统准备:修复 EOL 后的 yum 源问题
- Docker 安装:使用国内镜像源快速安装
- 自动化脚本:提供一键安装脚本
- 安装后配置:镜像加速、用户权限等优化
- 问题排查:常见问题的解决方案
- 最佳实践:安全、监控、维护建议
关键要点
- ✅ CentOS 7 虽已 EOL,但仍可正常使用 Docker
- ✅ 必须先修复 yum 源才能安装软件包
- ✅ 使用国内镜像源可大幅提升安装和使用速度
- ✅ 正确配置日志和资源限制很重要
- ⚠️ 建议尽快规划向新系统迁移
相关资源
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown转HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
- HTML转Markdown
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
- JSON 压缩
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
- JSON美化和格式化
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online