1. Docker RPM包本地安装全指南

在Linux系统上通过RPM包安装Docker,是许多企业环境下的标准操作流程。与直接使用yum仓库安装相比,本地RPM安装具有三大不可替代的优势:完全离线部署能力、版本锁定避免自动升级、自定义安装路径配置。本指南将详解从官方源获取DPM包到完成安装的全流程,并针对国内网络环境提供加速方案。

重要提示:RPM安装方式主要适用于CentOS/RHEL/Oracle Linux等基于Red Hat的发行版,Ubuntu/Debian用户应使用deb包

1.1 官方RPM仓库解析

Docker官方为RPM系Linux维护了专门的存储库,其目录结构遵循标准规范。最新稳定版RPM包通常位于:

https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

目录结构说明:

  • 7 代表CentOS/RHEL 7系列(对应内核3.10+)
  • x86_64 为64位架构(ARM设备需用aarch64)
  • stable 表示稳定版通道(另有edge和test通道)

国内镜像源推荐使用阿里云或腾讯云的Docker仓库,速度提升显著:

https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/

1.2 核心组件下载清单

完整Docker环境需要以下RPM包(以v24.0.6为例):

  1. 主引擎包: docker-ce-24.0.6-1.el7.x86_64.rpm
  2. CLI工具包: docker-ce-cli-24.0.6-1.el7.x86_64.rpm
  3. 容器运行时: containerd.io-1.6.22-3.1.el7.x86_64.rpm
  4. 组件依赖包: docker-ce-rootless-extras-24.0.6-1.el7.x86_64.rpm

下载示例(使用wget):

wget https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-24.0.6-1.el7.x86_64.rpm
wget https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-cli-24.0.6-1.el7.x86_64.rpm
wget https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/containerd.io-1.6.22-3.1.el7.x86_64.rpm

2. 系统准备与依赖处理

2.1 前置条件检查

执行以下命令验证系统环境:

# 内核版本检查(需≥3.10)
uname -r
# 存储驱动支持
ls -l /sys/fs/cgroup/
# 设备映射检查
ls -l /dev/mapper/

常见问题处理:

  1. 若出现 device-mapper 相关错误,需安装:
    yum install -y device-mapper-persistent-data lvm2
    
  2. 对于SELinux阻止问题,建议临时设置为permissive模式:
    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
    

2.2 依赖包解决方案

离线环境下需提前准备这些依赖包:

  • libcgroup
  • libseccomp
  • container-selinux
  • pigz

可通过以下命令下载依赖(需联网):

repotrack -a x86_64 -p ./docker-deps libcgroup libseccomp container-selinux pigz

3. 安装流程详解

3.1 顺序安装RPM包

必须按以下顺序安装:

rpm -ivh containerd.io-*.rpm
rpm -ivh docker-ce-cli-*.rpm
rpm -ivh docker-ce-*.rpm
rpm -ivh docker-ce-rootless-extras-*.rpm

关键参数说明:

  • --nodeps :跳过依赖检查(仅在确认依赖已满足时使用)
  • --force :覆盖安装现有版本
  • --test :模拟安装过程(测试阶段推荐)

3.2 服务配置优化

编辑配置文件 /etc/docker/daemon.json

{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  },
  "storage-driver": "overlay2",
  "registry-mirrors": [
    "https://registry.cn-hangzhou.aliyuncs.com"
  ]
}

启动服务并设置开机自启:

systemctl daemon-reload
systemctl enable --now docker

验证安装:

docker info | grep -E 'Version|Storage|Cgroup'

4. 典型问题排查指南

4.1 依赖冲突解决

当出现 package xxx is already installed 错误时,按以下步骤处理:

  1. 查询冲突包:
    rpm -qa | grep -E 'docker|containerd'
    
  2. 移除旧版本:
    rpm -e --nodeps 包名
    
  3. 重新执行安装

4.2 存储驱动问题

如果 docker info 显示 Storage Driver: devicemapper ,需强制使用overlay2:

  1. 停止服务:
    systemctl stop docker
    
  2. 清理旧数据:
    rm -rf /var/lib/docker/*
    
  3. 修改启动参数:
    mkdir -p /etc/systemd/system/docker.service.d
    cat > /etc/systemd/system/docker.service.d/override.conf <<EOF
    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd --storage-driver=overlay2
    EOF
    

4.3 防火墙配置

确保防火墙放行必要端口:

firewall-cmd --permanent --add-port=2375/tcp
firewall-cmd --permanent --add-port=2376/tcp
firewall-cmd --reload

5. 高级维护技巧

5.1 版本升级方案

  1. 下载新版本RPM包
  2. 执行升级而非安装:
    rpm -Uvh docker-ce-*.rpm
    
  3. 保留原有配置:
    rpm --upgrade --preserve-config
    

5.2 完全卸载步骤

彻底清除Docker环境:

systemctl stop docker
rpm -qa | grep docker | xargs rpm -e --nodeps
rm -rf /var/lib/docker /etc/docker
rm -f /etc/systemd/system/docker.service.d/*

5.3 离线环境部署

制作完整离线包:

mkdir docker-offline
repotrack -a x86_64 -p ./docker-offline docker-ce docker-ce-cli containerd.io
tar czvf docker-offline.tar.gz docker-offline

在目标机器恢复:

tar xzvf docker-offline.tar.gz
cd docker-offline
yum localinstall -y --disablerepo=* *.rpm

更多推荐