news 2026/4/28 6:06:23

【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/4/25 8:42:00

还在手写量子算法注释?这5个VSCode插件让你效率翻倍,省时90%

第一章&#xff1a;量子算法的 VSCode 文档注释在开发量子计算应用时&#xff0c;代码可读性与团队协作效率至关重要。使用 Visual Studio Code&#xff08;VSCode&#xff09;编写量子算法时&#xff0c;良好的文档注释不仅能提升维护性&#xff0c;还能帮助开发者快速理解复杂…

作者头像 李华
网站建设 2026/4/19 2:24:50

【量子计算开发安全警告】:你真的管好了VSCode作业的访问权限吗?

第一章&#xff1a;量子计算开发安全警告概述随着量子计算技术的快速发展&#xff0c;开发者在构建量子算法与系统时面临前所未有的安全挑战。传统加密机制在量子算力面前可能迅速失效&#xff0c;而开发环境本身也可能成为攻击入口。因此&#xff0c;在量子软件开发生命周期中…

作者头像 李华
网站建设 2026/4/23 20:41:03

XXPermissions终极指南:Android权限框架快速上手教程

XXPermissions终极指南&#xff1a;Android权限框架快速上手教程 【免费下载链接】XXPermissions Android 权限请求框架&#xff0c;已适配 Android 14 项目地址: https://gitcode.com/GitHub_Trending/xx/XXPermissions XXPermissions是一款专为Android平台设计的权限请…

作者头像 李华
网站建设 2026/4/27 7:02:06

18、构建前面板界面:从硬件到软件的全面指南

构建前面板界面:从硬件到软件的全面指南 1. 低功耗与用户反馈 当用户按下“Off”按钮时,传统的低功耗状态可能包含降低 CPU 时钟频率以及尽可能切断外围设备的电源。然而,随着越来越多的消费者要求“Off”意味着零功耗,这种方法逐渐不受青睐。 在系统操作方面,若无法实…

作者头像 李华
网站建设 2026/4/23 12:44:21

5分钟掌握Tiled碰撞蒙版:告别角色穿墙的游戏开发技巧

5分钟掌握Tiled碰撞蒙版&#xff1a;告别角色穿墙的游戏开发技巧 【免费下载链接】tiled 项目地址: https://gitcode.com/gh_mirrors/til/tiled 还在为游戏中角色莫名其妙穿过墙壁而烦恼吗&#xff1f;&#x1f914; 在2D游戏开发中&#xff0c;碰撞检测是决定游戏真实…

作者头像 李华
网站建设 2026/4/24 19:49:11

让 AI 自己修 Bug:揭秘测试 Agent 的“自我修正”与 Docker 沙箱实现

导读 接上篇&#xff0c;我们确立了基于 LangGraph 的状态机架构。本篇将深入代码细节&#xff0c;探讨该 Agent 的三大核心技术支柱&#xff1a;基于 Prompt 的代码生成、Docker 沙箱执行环境、以及最核心的 Reflexion 自我修正机制。 一、智能代码生成&#xff1a;从规范到 P…

作者头像 李华