准备工作(在有网络的机器上)
此阶段的目标是收集离线安装所需的所有文件,包括Docker自身的RPM软件包及其所有依赖项,以及可能需要预先准备的基础Docker镜像。
我们需要一台与目标离线服务器系统版本和架构(如CentOS 7 x86_64)完全相同的联网机器,在这台机器上,我们将下载所有必需的软件包。
安装下载工具
为了能够便捷地下载软件包及其依赖,我们需要安装yum-utils
工具集,它提供了yumdownloader
命令。
yum install -y yum-utils
下载Docker CE及其依赖
Docker的安装并非单一软件包,它依赖于containerd.io
、docker-ce-cli
等组件,使用yumdownloader
的--resolve
参数可以自动处理并下载所有依赖关系。
创建一个用于存放下载文件的目录:
mkdir -p /tmp/docker-offline-packages cd /tmp/docker-offline-packages
执行下载命令,这里以Docker CE 24.0.6版本为例:
yumdownloader --resolve --destdir=/tmp/docker-offline-packages docker-ce-24.0.6-1.el7 docker-ce-cli-24.0.6-1.el7 containerd.io-1.6.22-3.1.el7
说明:
--resolve
:下载软件包及其所有依赖。--destdir
:指定下载文件的存储目录。- 后面跟的是具体的Docker版本包,可以根据需要从Docker官方YUM源中查找最新或特定版本。
准备Docker镜像(可选但推荐)
如果离线环境中需要立即运行特定的容器,建议在有网络的机器上预先拉取并打包镜像,准备一个alpine
镜像:
# 拉取镜像 docker pull alpine:latest # 将镜像保存为tar文件 docker save -o alpine-latest.tar alpine:latest
打包所有文件
将下载的RPM包和镜像文件打包,方便传输到离线服务器。
tar -zcvf docker-offline-resources.tar.gz /tmp/docker-offline-packages/ alpine-latest.tar
离线安装(在目标CentOS机器上)
我们将打包好的docker-offline-resources.tar.gz
文件通过U盘、移动硬盘或内部网络共享等方式传输到目标离线CentOS服务器上。
解压并安装软件包
解压传输过来的文件:
tar -zxvf docker-offline-resources.tar.gz
进入解压后的RPM包目录,并使用yum localinstall
命令进行安装,此命令能够从本地文件安装,并自动处理本地已存在的依赖关系。
cd tmp/docker-offline-packages yum localinstall -y *.rpm
这个命令会自动安装目录下所有的.rpm
文件,包括docker-ce
、containerd.io
及其所有依赖。
启动并配置Docker服务
安装完成后,启动Docker服务,并将其设置为开机自启。
systemctl start docker systemctl enable docker
导入Docker镜像
如果之前准备了镜像文件,现在可以将其加载到Docker中。
# 假设镜像文件在当前目录 docker load -i alpine-latest.tar
验证安装
通过几个简单命令验证Docker是否安装成功并正常运行。
# 查看Docker版本信息 docker version # 查看已加载的镜像 docker images
如果上述命令都能正常输出信息,特别是docker images
能看到之前导入的alpine
镜像,那么恭喜你,Docker已经成功在离线环境中部署完成。
为了更清晰地展示整个过程,以下是核心命令的概要表格:
阶段 | 操作 | 命令示例 |
---|---|---|
准备阶段 | 安装下载工具 | yum install -y yum-utils |
下载Docker及依赖 | yumdownloader --resolve --destdir=... docker-ce ... | |
保存Docker镜像 | docker save -o image-name.tar image:tag | |
安装阶段 | 本地安装RPM包 | yum localinstall -y *.rpm |
启动Docker服务 | systemctl start docker && systemctl enable docker | |
加载Docker镜像 | docker load -i image-name.tar | |
验证安装 | docker version && docker images |
相关问答FAQs
Q1: 安装时提示依赖包缺失或版本冲突怎么办?
A1: 这个问题的根本原因通常是准备阶段和安装阶段的环境不一致,请务必确保:
- 用于下载软件包的联网机器与目标离线机器的CentOS主版本号(如都是7.x)和系统架构(如都是x86_64)完全相同。
- 在准备阶段,使用
yumdownloader --resolve
命令,确保所有依赖项都被完整下载,没有遗漏。 - 检查目标离线机器上是否已存在旧版本的Docker或相关依赖(如
docker
或containerd
),如果存在,需要先彻底卸载:yum erase docker* containerd.io
,然后再进行安装。
Q2: 如何升级离线环境中的Docker版本?
A2: 离线环境的升级过程与初次安装类似,是一个重复的准备和安装流程。
- 在联网机器上,访问Docker官方仓库,下载新版本的Docker CE及其依赖的RPM包,同样使用
yumdownloader --resolve
命令。 - 将新版本的RPM包传输到离线机器上。
- 在离线机器上,直接使用
yum localinstall -y *.rpm
命令安装新版本的包。yum
会自动处理新旧版本的替换,完成升级过程。 - 升级后,建议重启Docker服务以确保所有组件都使用新版本:
systemctl restart docker
。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复