CentOS 7 下 Docker 安装完整指南(含阿里云源 + 镜像加速)

照着这篇做,你的CentOS 7服务器也能用上Docker。全是实测命令,直接复制执行就行。


一、为啥要在CentOS 7上装Docker?

作为一个还在用CentOS 7的开发者,你可能经常遇到这些问题:

  • 开发环境跑得好好的,一到服务器就报各种依赖缺失;
  • 部署一个新项目,要在服务器上装JDK、MySQL、Redis,装完还担心版本冲突;
  • 迁移项目时,环境配置都得重来一遍。

Docker的出现就是为了解决这些问题。它能把你的应用、依赖、配置全部打包成一个容器,换到任何支持Docker的机器上都能一键运行。

注意:CentOS 7已于2024年6月30日停止维护(EOL),但Docker依然可以在上面运行,适合学习和非生产环境使用。

二、安装前准备

2.1 检查系统版本和内核

Docker要求CentOS 7为64位系统,内核版本不低于3.10。

# 查看系统版本
cat /etc/os-release

# 查看内核版本
uname -r

正常输出应类似:3.10.0-xxx.el7.x86_64。CentOS 7默认满足最低内核要求。

2.2 卸载旧版本Docker(如有)

如果系统里之前装过旧版Docker,先卸载干净,避免冲突。

sudo yum remove docker \
  docker-client \
  docker-client-latest \
  docker-common \
  docker-latest \
  docker-latest-logrotate \
  docker-logrotate \
  docker-engine \
  docker-selinux

如果提示“未找到软件包”,说明之前没装过,直接往下走就行。

三、配置国内YUM源(关键步骤)

CentOS 7官方源已经停服,直接使用原版源会导致yum makecache报404,所以必须先替换为国内镜像源。

3.1 备份原有YUM源配置

sudo mv /etc/yum.repos.d /etc/yum.repos.d.bak
sudo mkdir /etc/yum.repos.d

3.2 下载阿里云CentOS 7基础源

sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

3.3 (可选)添加EPEL扩展源

EPEL源包含很多额外的软件包,建议一起装上。

sudo yum install -y epel-release

3.4 清理并重建YUM缓存

sudo yum clean all
sudo yum makecache

四、安装Docker

4.1 安装依赖包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

4.2 添加Docker CE国内仓库

Docker官方仓库在国内下载很慢,建议使用阿里云的Docker CE仓库。

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.3 安装指定版本的Docker

注意:最新版Docker可能与CentOS 7不兼容,推荐安装20.10.x或24.0.x版本。

# 推荐安装24.0.7
sudo yum install -y docker-ce-24.0.7-1.el7 docker-ce-cli-24.0.7-1.el7 containerd.io

如果想装20.10.9,把命令中的版本号替换成docker-ce-20.10.9-3.el7就行。

五、启动并验证Docker

5.1 启动Docker服务并设置开机自启

# 启动Docker
sudo systemctl start docker

# 设置开机自启
sudo systemctl enable docker

# 查看运行状态
sudo systemctl status docker

如果看到active (running),说明Docker启动成功。

5.2 运行hello-world验证

sudo docker run hello-world

如果输出Hello from Docker!,说明安装成功。

六、配置国内镜像加速(强烈推荐)

在国内拉取Docker Hub上的官方镜像非常慢,经常超时。配置镜像加速器可以大幅提升拉取速度。

6.1 创建或编辑daemon.json配置文件

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://mirror.iscas.ac.cn"
  ]
}
EOF

6.2 重启Docker使配置生效

sudo systemctl daemon-reload
sudo systemctl restart docker

6.3 验证加速是否生效

docker info | grep -A 5 "Registry Mirrors"

如果能看到刚才配置的镜像地址,说明配置成功。

七、(可选)免sudo使用Docker

默认只有root用户和docker组的成员才能执行docker命令。把当前用户加入docker组就可以免sudo了。

# 添加docker组(如果不存在)
sudo groupadd docker

# 将当前用户加入docker组
sudo usermod -aG docker $USER

然后重新登录服务器,或执行以下命令使配置立即生效:

newgrp docker

之后就可以直接运行docker run hello-world,不用再加sudo了。

八、Docker常用命令速查

命令 作用
docker ps 列出正在运行的容器
docker ps -a 列出所有容器(含已停止)
docker images 列出本地镜像
docker pull 镜像名:版本 拉取镜像
docker run -d 镜像名 创建并后台运行容器
docker stop 容器ID/名称 停止运行中的容器
docker rm 容器ID/名称 删除已停止的容器
docker rmi 镜像ID/名称 删除本地镜像
docker logs 容器ID/名称 查看容器运行日志
docker exec -it 容器ID bash 进入容器内部

九、常见问题排查

1. yum makecache报404错误

原因:CentOS 7官方源已停服。

解决:按“第三节”步骤,先将YUM源替换为阿里云源。

2. docker run hello-world时报连接超时

原因:Docker Hub被墙,拉取镜像慢。

解决:按“第六节”步骤,配置国内镜像加速。

3. 启动Docker时提示“error initializing graphdriver: overlay2”

原因:XFS文件系统没有启用d_type支持。

解决:修改/etc/docker/daemon.json,添加以下配置:

{
  "storage-driver": "overlay2",
  "storage-opts": ["overlay2.override_kernel_check=true"]
}

然后重启Docker。

4. 普通用户执行docker命令提示Permission denied

原因:当前用户不在docker组。

解决:执行“第七节”的步骤,将用户加入docker组后重新登录。

5. 安装docker-compose-plugin失败

原因:阿里云镜像中可能缺少特定版本的docker-compose-plugin。

解决:手动下载安装:

wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-compose-plugin-2.27.1-1.el7.x86_64.rpm
rpm -ivh docker-compose-plugin-2.27.1-1.el7.x86_64.rpm

十、总结

至此,你已经成功在CentOS 7上完成了Docker的安装、启动、镜像加速配置和用户权限设置。总结一下核心步骤:

  1. 替换系统YUM源为阿里云源
  2. 安装Docker CE(推荐24.0.7或20.10.9版本)
  3. 启动Docker并设置开机自启
  4. 配置国内镜像加速(解决拉取慢问题)
  5. 把当前用户加入docker组(免sudo)

全部完成后,就可以开始用Docker拉取镜像、运行容器了。

祝你一次安装成功!

更多推荐