news 2026/3/7 4:55:39

【CentOS7】CentOS 7 Docker 安装

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【CentOS7】CentOS 7 Docker 安装

CentOS 7 Docker 完整安装指南(2024年最新版)

📋 目录

  • 前言
  • 环境说明
  • 安装前的准备工作
  • Docker 安装步骤
  • 完整安装脚本
  • 安装后配置
  • 常见问题排查
  • 最佳实践建议
  • 总结

前言

Docker 作为当前最流行的容器化技术,已经成为现代应用部署的标准工具。本文将详细介绍如何在 CentOS 7 系统上完整安装 Docker CE(社区版),并提供一键安装脚本。

重要提示 ⚠️

CentOS 7 已于 2024年6月30日 正式 EOL(End of Life),官方已停止更新维护。如果您正在规划新项目,建议迁移到以下操作系统:

  • Rocky Linux 9
  • AlmaLinux 9
  • Ubuntu 22.04 LTS

但如果您仍需在 CentOS 7 上部署 Docker,本文提供的方案依然有效且稳定。


环境说明

系统要求

  • 操作系统:CentOS 7.x(64位)
  • 内核版本:3.10 及以上
  • 硬件要求
    • CPU:2核及以上
    • 内存:2GB 及以上
    • 磁盘:20GB 及以上可用空间

版本信息

本文安装的 Docker 版本:

  • Docker CE(Community Edition)
  • Docker Compose V2(作为插件)
  • Containerd 运行时

安装前的准备工作

1. 修复 CentOS 7 Yum 源

由于 CentOS 7 已经 EOL,原有的镜像源已无法使用,需要先切换到 vault 源。

创建修复脚本fix_centos7_repo.sh

#!/bin/bash# 检查 root 权限if["$EUID"-ne0];thenecho"请使用 root 用户运行"exit1fi# 备份原有配置mkdir-p /etc/yum.repos.d/backupmv/etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/# 创建新的 repo 配置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 makecacheecho"Yum 源修复完成!"

执行修复:

chmod+x fix_centos7_repo.shsudo./fix_centos7_repo.sh

2. 检查系统环境

# 查看系统版本cat/etc/centos-release# 查看内核版本uname-r# 检查系统架构uname-m

3. 更新系统(可选)

sudoyum update -y

Docker 安装步骤

步骤 1:卸载旧版本

如果之前安装过 Docker,需要先卸载:

sudoyum 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:安装依赖包

sudoyuminstall-y yum-utils\device-mapper-persistent-data\lvm2

依赖包说明

  • yum-utils:提供 yum-config-manager 工具
  • device-mapper-persistent-data:设备映射器存储驱动
  • lvm2:逻辑卷管理器

步骤 3:添加 Docker 官方 Yum 源

# 使用阿里云镜像(国内访问更快)sudoyum-config-manager --add-repo\https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 修改为阿里云镜像地址sudosed-i's+download.docker.com+mirrors.aliyun.com/docker-ce+'\/etc/yum.repos.d/docker-ce.repo

步骤 4:查看可用版本

# 查看所有可用的 Docker 版本yum list docker-ce --showduplicates|sort-r

步骤 5:安装 Docker

# 安装最新稳定版sudoyuminstall-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

# 启动 Docker 服务sudosystemctl start docker# 设置开机自启sudosystemctlenabledocker# 查看运行状态sudosystemctl status docker

步骤 7:验证安装

# 查看 Docker 版本docker --version# 查看详细信息docker info# 运行测试容器sudodocker run hello-world

如果看到 “Hello from Docker!” 消息,说明安装成功!


完整安装脚本

为了简化安装过程,我编写了一个完整的自动化安装脚本。

创建文件install_docker.sh

#!/bin/bash# CentOS 7 Docker 安装脚本# 作者: [您的名字]# 日期: 2024-12echo"=================================="echo"CentOS 7 Docker 安装脚本"echo"=================================="# 检查是否为 root 用户if["$EUID"-ne0];thenecho"错误: 请使用 root 用户或 sudo 运行此脚本"exit1fi# 检查系统版本echo"正在检查系统版本..."if[!-f /etc/centos-release];thenecho"错误: 此脚本仅适用于 CentOS 7"exit1ficentos_version=$(cat/etc/centos-release|grep-oP'\d+'|head-1)if["$centos_version"!="7"];thenecho"错误: 此脚本仅适用于 CentOS 7,当前版本:$centos_version"exit1fiecho"系统版本检查通过: CentOS 7"echo""# 卸载旧版本的 Docker(如果存在)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.ioecho"旧版本清理完成"echo""# 安装必要的依赖包echo"正在安装必要的依赖包..."yuminstall-y yum-utils\device-mapper-persistent-data\lvm2if[$?-ne0];thenecho"错误: 依赖包安装失败,请检查 yum 源配置"exit1fiecho"依赖包安装完成"echo""# 添加 Docker CE 官方 yum 源(使用阿里云镜像)echo"正在添加 Docker CE yum 源(阿里云镜像)..."yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 由于 CentOS 7 EOL,需要修改 repo 文件以确保兼容性sed-i's+download.docker.com+mirrors.aliyun.com/docker-ce+'/etc/yum.repos.d/docker-ce.repoecho"Docker yum 源配置完成"echo""# 更新 yum 缓存echo"正在更新 yum 缓存..."yum makecache fast# 查看可用的 Docker 版本(可选)echo"可用的 Docker CE 版本:"yum list docker-ce --showduplicates|sort-r|head-10echo""# 安装最新版本的 Docker CEecho"正在安装 Docker CE(最新稳定版)..."yuminstall-y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginif[$?-ne0];thenecho"错误: Docker 安装失败"exit1fiecho"Docker 安装完成"echo""# 启动 Docker 服务echo"正在启动 Docker 服务..."systemctl start dockerif[$?-ne0];thenecho"错误: Docker 服务启动失败"exit1fi# 设置 Docker 开机自启echo"正在设置 Docker 开机自启..."systemctlenabledocker# 验证 Docker 是否安装成功echo""echo"=================================="echo"验证 Docker 安装..."echo"=================================="docker_version=$(docker --version)if[$?-eq0];thenecho"✓ Docker 版本:$docker_version"elseecho"✗ Docker 安装验证失败"exit1fi# 运行测试容器echo""echo"正在运行 hello-world 测试容器..."docker run --rm hello-worldif[$?-eq0];thenecho""echo"=================================="echo"✓ Docker 安装成功!"echo"=================================="elseecho""echo"=================================="echo"✗ Docker 测试失败"echo"=================================="exit1fi# 配置 Docker 镜像加速器(可选,使用阿里云镜像加速)echo""echo"是否配置 Docker 镜像加速器?(y/n)"read-t10-p"10秒后将自动跳过: "configure_mirrorif["$configure_mirror"="y"]||["$configure_mirror"="Y"];thenecho"正在配置 Docker 镜像加速器..."mkdir-p /etc/dockercat>/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# 重启 Docker 服务以应用配置echo"正在重启 Docker 服务..."systemctl daemon-reload systemctl restart dockerecho"✓ Docker 镜像加速器配置完成"fi# 显示 Docker 信息echo""echo"=================================="echo"Docker 系统信息"echo"=================================="docker info|grep-E"Server Version|Storage Driver|Registry Mirrors"||docker infoecho""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""

使用方法

# 1. 创建脚本文件viinstall_docker.sh# 2. 粘贴上述脚本内容,保存退出# 3. 添加执行权限chmod+x install_docker.sh# 4. 执行安装sudo./install_docker.sh

脚本执行过程中会自动完成所有安装步骤,并在最后进行验证测试。


安装后配置

1. 配置用户权限

默认情况下,只有 root 用户可以执行 Docker 命令。为普通用户添加权限:

# 将当前用户添加到 docker 组sudousermod-aG docker$USER# 重新登录以使配置生效,或执行:newgrp docker# 验证权限dockerps

2. 配置镜像加速器

为了加速镜像拉取,配置国内镜像源:

创建或编辑/etc/docker/daemon.json

sudomkdir-p /etc/dockersudotee/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-driverlog-opts:日志配置,防止日志文件过大
  • storage-driver:存储驱动,overlay2 性能更好

重启 Docker 使配置生效:

sudosystemctl daemon-reloadsudosystemctl restart docker

验证配置:

docker info|grep-A5"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失败

解决方案

# 查看详细错误日志sudojournalctl -xe -u docker# 检查配置文件语法sudodockerd --validate# 重置 Docker 配置sudorm/etc/docker/daemon.jsonsudosystemctl restart docker

问题 2:镜像拉取速度慢

症状:执行docker pull速度很慢或超时

解决方案

  1. 配置镜像加速器(见上文)
  2. 检查网络连接
  3. 尝试不同的镜像源
# 测试镜像源可用性curl-I https://docker.mirrors.ustc.edu.cn

问题 3:容器无法访问外网

症状:容器内无法 ping 通外网

解决方案

# 检查 IP 转发是否开启cat/proc/sys/net/ipv4/ip_forward# 应该输出 1# 如果输出 0,开启 IP 转发sudoecho"net.ipv4.ip_forward=1">>/etc/sysctl.confsudosysctl -p# 重启 Dockersudosystemctl restart docker

问题 4:磁盘空间不足

症状:提示 “no space left on device”

解决方案

# 清理未使用的镜像docker image prune -a# 清理未使用的容器docker container prune# 清理未使用的卷docker volume prune# 清理所有未使用的资源docker system prune -a --volumes# 查看磁盘使用情况docker systemdf

问题 5:权限问题

症状:非 root 用户执行 docker 命令报权限错误

解决方案

# 将用户添加到 docker 组sudousermod-aG docker$USER# 注销并重新登录,或执行newgrp docker# 验证id-nG|grepdocker

问题 6:Yum 源问题

症状:安装过程中提示找不到包

解决方案

# 清理 yum 缓存sudoyum clean all# 重建缓存sudoyum makecache# 检查 repo 配置sudoyum repolist# 如果还是不行,重新配置 vault 源sudovi/etc/yum.repos.d/CentOS-Base.repo

最佳实践建议

1. 安全加固

# 限制 Docker 守护进程的访问sudochmod600/var/run/docker.sock# 使用非 root 用户运行容器docker run --user1000:1000<image># 限制容器资源docker run --memory="512m"--cpus="1.0"<image>

2. 日志管理

定期清理 Docker 日志:

# 查看日志大小sudodu-sh /var/lib/docker/containers/*/*-json.log# 创建日志清理脚本cat>/usr/local/bin/clean-docker-logs.sh<<'EOF' #!/bin/bash find /var/lib/docker/containers/ -name "*-json.log" -exec truncate -s 0 {} \; EOFchmod+x /usr/local/bin/clean-docker-logs.sh# 添加定时任务(每周清理一次)(crontab -l2>/dev/null;echo"0 2 * * 0 /usr/local/bin/clean-docker-logs.sh")|crontab-

3. 监控和维护

# 监控 Docker 状态docker stats# 查看 Docker 事件docker events# 定期更新 Dockersudoyum update docker-ce docker-ce-cli containerd.io

4. 备份重要数据

# 备份 Docker 卷docker run --rm -v volume_name:/data -v$(pwd):/backup\alpinetarczf /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:

# docker-compose.yml 示例version:'3.8'services:web:image:nginx:alpineports:-"80:80"volumes:-./html:/usr/share/nginx/htmlrestart:unless-stoppeddb:image:mysql:8.0environment:MYSQL_ROOT_PASSWORD:passwordMYSQL_DATABASE:mydbvolumes:-db_data:/var/lib/mysqlrestart:unless-stoppedvolumes:db_data:

使用命令:

# 启动服务docker compose up -d# 查看状态docker composeps# 停止服务docker compose down

总结

本文详细介绍了在 CentOS 7 系统上安装 Docker 的完整流程,包括:

  1. 系统准备:修复 EOL 后的 yum 源问题
  2. Docker 安装:使用国内镜像源快速安装
  3. 自动化脚本:提供一键安装脚本
  4. 安装后配置:镜像加速、用户权限等优化
  5. 问题排查:常见问题的解决方案
  6. 最佳实践:安全、监控、维护建议

关键要点

  • ✅ CentOS 7 虽已 EOL,但仍可正常使用 Docker
  • ✅ 必须先修复 yum 源才能安装软件包
  • ✅ 使用国内镜像源可大幅提升安装和使用速度
  • ✅ 正确配置日志和资源限制很重要
  • ⚠️ 建议尽快规划向新系统迁移

相关资源

  • Docker 官方文档:https://docs.docker.com/
  • Docker Hub:https://hub.docker.com/
  • CentOS 官方网站:https://www.centos.org/

附录:常用 Docker 命令速查表

镜像操作

docker images# 列出所有镜像docker pull<镜像名># 拉取镜像docker rmi<镜像ID># 删除镜像docker build -t<标签>.# 构建镜像docker tag<><目标># 标记镜像docker save<镜像>>file.tar# 导出镜像docker load<file.tar# 导入镜像

容器操作

dockerps# 列出运行中的容器dockerps-a# 列出所有容器docker run<镜像># 运行容器docker start<容器ID># 启动容器docker stop<容器ID># 停止容器docker restart<容器ID># 重启容器dockerrm<容器ID># 删除容器dockerexec-it<容器ID>bash# 进入容器docker logs<容器ID># 查看日志

系统维护

docker systemdf# 查看磁盘使用docker system prune# 清理未使用资源docker info# 查看系统信息docker version# 查看版本信息

作者信息

如果本文对您有帮助,欢迎点赞、收藏、关注!

有任何问题欢迎在评论区讨论。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/4 12:11:11

VSCode + 量子机器学习:高效结果评估的4步黄金法则

第一章&#xff1a;量子机器学习的 VSCode 结果评估在现代量子机器学习开发中&#xff0c;VSCode 作为主流集成开发环境&#xff0c;为算法调试与结果可视化提供了强大支持。通过插件如 Python、Q# 和 Quantum Development Kit&#xff0c;开发者能够在本地高效运行量子电路模拟…

作者头像 李华
网站建设 2026/3/5 13:12:12

终极指南:用OpenPLC Editor快速掌握工业自动化开发

终极指南&#xff1a;用OpenPLC Editor快速掌握工业自动化开发 【免费下载链接】OpenPLC_Editor 项目地址: https://gitcode.com/gh_mirrors/ope/OpenPLC_Editor 在当今的工业自动化领域&#xff0c;PLC编程已成为控制系统的核心技术。对于初学者而言&#xff0c;开源工…

作者头像 李华
网站建设 2026/3/4 4:32:14

17、打造高效前端面板界面的实用指南

打造高效前端面板界面的实用指南 在现代电子设备的设计中,前端面板界面的设计至关重要,它直接影响着用户体验和设备的易用性。本文将详细介绍前端面板界面设计中涉及的键盘、LED、LCD 等组件的使用和优化,以及如何设计一个简洁、快速响应的前端面板 UI。 键盘消抖与扫描 …

作者头像 李华
网站建设 2026/3/4 4:32:15

【2024必看】量子编程工具链进化:VSCode扩展究竟改变了什么?

第一章&#xff1a;量子模拟器扩展的 VSCode 兼容性Visual Studio Code&#xff08;VSCode&#xff09;作为现代开发者的主流编辑器&#xff0c;其强大的扩展生态为前沿技术领域提供了灵活支持。随着量子计算的发展&#xff0c;量子模拟器扩展逐渐成为科研与工程实践中的关键工…

作者头像 李华
网站建设 2026/3/4 12:43:02

Wan2.2-Animate-14B:免费开源的终极角色动画革命

Wan2.2-Animate-14B&#xff1a;免费开源的终极角色动画革命 【免费下载链接】Wan2.2-Animate-14B 项目地址: https://ai.gitcode.com/hf_mirrors/Wan-AI/Wan2.2-Animate-14B 在数字内容创作领域&#xff0c;Wan2.2-Animate-14B的出现彻底改变了角色动画的制作方式。这…

作者头像 李华
网站建设 2026/3/4 4:32:15

3种Web方案:GoCV图像处理结果的前端展示指南

3种Web方案&#xff1a;GoCV图像处理结果的前端展示指南 【免费下载链接】gocv hybridgroup/gocv: 是一个基于 Go 语言的开源计算机视觉库&#xff0c;支持多种计算机视觉算法和工具。该项目提供了一个简单易用的计算机视觉库&#xff0c;可以方便地实现图像和视频处理算法&…

作者头像 李华