1. 企业内网离线部署:为什么它既是挑战也是机遇
很多朋友一听到“内网”、“离线”这几个词,头就大了。确实,在如今这个万物互联的时代,习惯了敲个命令就自动下载安装的我们,突然要在一个与世隔绝的环境里部署一套完整的Docker生态,感觉就像回到了“刀耕火种”的年代。但我想说,这恰恰是体现我们技术深度和工程化能力的好机会。在企业里,尤其是金融、军工、政府、科研等对网络安全有极高要求的单位,生产环境、测试环境甚至开发环境都部署在严格的内网中,与互联网物理隔离是常态。在这种场景下,你不能指望 yum install 或者 apt-get 能帮你搞定一切,所有依赖都必须提前准备好,打包成一个完整的“离线部署包”。
我经历过好几次从零开始搭建内网Docker平台的项目,踩过的坑不计其数。比如,你以为把所有RPM包都下载了,结果安装时提示缺了某个底层依赖;又比如,在Windows服务器上,Docker Desktop的安装包版本和系统版本不匹配,导致虚拟化功能死活起不来。这些经历让我明白,离线部署远不止是“下载-拷贝-安装”那么简单,它是一个系统工程,考验的是你对整个软件栈依赖关系的理解,以及事无巨细的准备工作。
所以,这篇攻略的目的,就是把我这些年积累的实战经验,特别是针对 Windows Server 和 CentOS/RHEL 这两个企业最常用的操作系统,整理成一套可复制、可落地的完整方案。我会带你走通从准备离线包、传输、安装、配置到最终验证的每一个环节,并分享一些只有踩过坑才知道的“骚操作”和安全建议。无论你是企业的运维工程师,还是需要在内网部署开发环境的后端开发,这篇文章都能让你少走很多弯路。
2. 战前准备:打造你的“离线武器库”
俗话说,工欲善其事,必先利其器。离线部署的成功,90%取决于准备工作是否充分。这一步的核心思想是:在一台能联网的、环境尽可能干净的机器上,模拟出与目标内网机器相同的系统环境,然后“榨取”出所有需要的安装包和镜像。
2.1 环境侦察与规划
动手之前,先别急着下载。你需要成为“侦察兵”,搞清楚目标战场的情况。
- 目标系统信息:精确记录目标服务器的操作系统版本、架构。是 Windows Server 2019 还是 2022?是 CentOS 7.9 还是 Rocky Linux 8.7?是 x86_64 还是 ARM 架构?一个字母都不能错。用
systeminfo(Windows)或cat /etc/os-release(CentOS)命令确认。 - 资源评估:评估目标服务器的硬件资源。Docker 运行需要虚拟化支持(Intel VT-x / AMD-V),需要在BIOS中确认已开启。内存和磁盘空间是硬指标,建议生产环境至少预留4GB内存和20GB磁盘空间给Docker使用。
- 网络规划:虽然主环境离线,但内部网络规划很重要。考虑Docker容器是否需要固定的IP段?是否要与企业内已有的DNS、镜像仓库(如Harbor)集成?提前规划好,能避免安装后的一堆麻烦。
2.2 CentOS/RHEL离线包深度打包术
对于Linux系统,我们主要使用RPM包管理器。但单纯用 yumdownloader 下载主包是不够的。
基础方法:使用 yumdownloader 就像原始文章提到的,这是一个好的开始。你需要先配置好与目标系统版本一致的Yum源(例如,为CentOS 7配置base、epel、docker-ce源)。然后,使用 --resolve 参数下载指定软件及其所有依赖。
# 在联网的、同版本CentOS 7机器上操作
mkdir -p /opt/offline-docker
cd /opt/offline-docker
# 安装下载工具
yum install -y yum-utils createrepo
# 添加Docker官方源(这里以CentOS 7为例)
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 下载Docker CE全家桶及其所有依赖
yumdownloader --resolve --destdir ./docker-rpms \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
# 别忘了系统依赖,如device-mapper和lvm2,它们可能不在Docker源里
yumdownloader --resolve --destdir ./sys-rpms \
device-mapper-persistent-data \
lvm2
进阶技巧:创建本地Yum仓库 上面的方法下载的是一堆散落的RPM包。更专业的做法是创建一个本地的Yum仓库,这样在目标机上安装时,依然可以使用 yum install 命令,它能自动处理复杂的依赖关系,体验和在线安装几乎一样。
# 继续在上面的目录操作,将所有RPM包集中到一个目录
mkdir -p /opt/offline-docker/local-repo
cp ./docker-rpms/*.rpm ./sys-rpms/*.rpm /opt/offline-docker/local-repo/
# 使用createrepo命令生成仓库元数据
createrepo /opt/offline-docker/local-repo/
# 现在,这个 local-repo 目录就是一个完整的Yum仓库了。
# 将其打包


63

被折叠的 条评论
为什么被折叠?



