Ubuntu:无网络环境下Docker部署全攻略

张开发
2026/4/6 1:31:53 15 分钟阅读

分享文章

Ubuntu:无网络环境下Docker部署全攻略
1. 为什么需要离线部署Docker最近接手了一个企业级项目客户要求在内网环境部署一套容器化平台。刚接到需求时我也懵了——没有外网怎么装Docker经过两周实战我整理出这套保姆级离线部署方案。这种场景其实很常见军工单位的数据中心、银行的金融专网、工厂的生产线服务器...这些环境往往出于安全考虑会切断外网连接。离线安装的核心思路就像野营准备出发前把所有食材和工具打包好。我们需要在有网络的大本营准备好所有安装包包括Docker本体和它的依赖家族containerd、runc等组件然后用U盘或内网传输到目标服务器。这里有个容易踩的坑很多人只下载docker-ce主包结果安装时报依赖缺失。就像带烧烤架却忘了带木炭设备再高级也生不起火。2. 准备离线安装资源包2.1 确定系统版本和架构在联网机器上打开终端先确认目标服务器的身份证信息lsb_release -a # 查看Ubuntu版本 uname -m # 查看CPU架构我曾遇到x86_64架构的服务器误装arm64包的情况就像给汽油车加柴油根本启动不了。常见的架构有amd64普通PC服务器arm64树莓派等嵌入式设备ppc64leIBM Power服务器2.2 下载Docker全家桶以Ubuntu 22.04为例我们需要下载这些核心组件版本号请替换为最新稳定版wget https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/containerd.io_1.6.21-1_amd64.deb wget https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-ce_24.0.2-1~ubuntu.22.04~jammy_amd64.deb wget https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-ce-cli_24.0.2-1~ubuntu.22.04~jammy_amd64.deb wget https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-buildx-plugin_0.11.2-1~ubuntu.22.04~jammy_amd64.deb重要提示就像组装电脑要匹配接口组件版本必须严格对应。建议通过官方仓库目录查看最新版本curl -fsSL https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/ | grep -oP docker-ce_\K[^]*2.3 处理依赖关系Docker就像乐高积木需要底层积木块支撑。通过这个命令可以下载所有依赖apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests docker-ce | grep -v | sort -u)建议新建一个离线资源目录把所有.deb文件放进去。我习惯按功能分类offline-docker/ ├── main/ # Docker主包 ├── dependencies/ # 系统依赖 └── tools/ # 辅助工具3. 离线安装实战步骤3.1 传输安装包到目标服务器根据环境选择传输方式物理隔离环境用FAT32格式的U盘NTFS在Linux需要额外驱动内网服务器用scp命令快速传输scp -r offline-docker/ usertarget_server:/tmp/遇到过文件权限问题试试先打包再传输tar czvf docker-offline.tar.gz offline-docker/3.2 安装系统依赖就像盖房子要先打地基这些基础包必须优先安装sudo dpkg -i dependencies/*.deb常见问题处理出现依赖错误时用apt-get -f install自动修复需要事先下载好相关包缺少libseccomp2等关键依赖时可以从ubuntu官方仓库单独下载3.3 安装Docker组件按顺序安装核心三件套sudo dpkg -i containerd.io_*.deb sudo dpkg -i docker-ce-cli_*.deb sudo dpkg -i docker-ce_*.deb安装后检查服务状态sudo systemctl status containerd # 应该显示active (running) sudo docker --version # 显示版本号即成功4. 离线环境的使用技巧4.1 加载本地镜像在没有Docker Hub的情况下我们可以像搬家一样搬运镜像# 在联网机器保存镜像 docker save -o nginx.tar nginx:latest # 在离线机器加载 docker load -i nginx.tar4.2 离线镜像仓库搭建长期使用建议部署本地registrydocker run -d -p 5000:5000 --restartalways --name registry registry:2推送镜像到本地仓库docker tag nginx:latest localhost:5000/my-nginx docker push localhost:5000/my-nginx4.3 常用工具打包把这些实用工具也放进资源包docker-compose管理多容器dive镜像分析工具ctop容器监控工具5. 故障排查指南症状docker命令报无法连接到守护进程检查服务状态sudo systemctl status docker查看日志journalctl -u docker -n 50常见原因/var/run/docker.sock权限问题症状容器无法启动检查存储驱动docker info | grep Storage建议使用overlay2驱动可能需要挂载特殊目录-v /dev:/dev记得第一次部署时遇到containerd崩溃后来发现是旧版本残留导致的。彻底清理的命令sudo apt-get purge docker-ce docker-ce-cli containerd.io sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd

更多文章