关键在于提前归档指定版本镜像包、运行时配置文件和轻量启动脚本;部署分四步——装运行时、载镜像、启容器、验就绪,每步须严格验证输出,确保镜像存在、容器运行且服务可连通。

在离线环境快速拉起指定版本容器,关键不是“现场构建”,而是提前归档 + 精准加载 + 确认就绪。没有网络,就不能依赖 docker pull 或远程 registry,必须把所有依赖打包好、带进去、验清楚。
一、提前准备三类必需资产
离线启动前,必须在有网机器(跳板机)上完成归档,缺一不可:
-
指定版本镜像包:用
docker save -o redis-7.2.0.tar redis:7.2.0保存精确版本,避免 latest 漂移;若含多层依赖(如 base 镜像+业务镜像),建议一次性docker save -o all.tar img1:tag img2:tag; -
运行时配置文件:包括
docker-compose.yml(镜像地址写成localhost:5000/redis:7.2.0或直接用本地镜像名)、redis.conf(绑定0.0.0.0、禁用daemonize yes)、.env中的端口与密码变量; -
轻量启动脚本:含校验逻辑,例如先
sha256sum -c images.sha256验证完整性,再docker load -i redis-7.2.0.tar,最后检查docker images | grep redis是否存在且 tag 匹配。
二、内网服务器四步稳启
每步执行后必须验证输出,不靠“看起来起来了”:
- 安装 Docker 运行时:解压
docker-24.0.7.tgz到/usr/bin,配置/etc/docker/daemon.json关闭 mirror,执行systemctl enable --now docker && docker info | grep "Server Version"; - 加载镜像:运行
docker load -i redis-7.2.0.tar,然后docker images --format "{{.Repository}}:{{.Tag}}" | grep "^redis:7.2.0$",必须严格匹配; - 启动容器:用
docker run -d --name redis-prod -p 6379:6379 -v /home/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf -v /home/docker/redis/data:/data redis:7.2.0 redis-server /usr/local/etc/redis/redis.conf; - 验证就绪:
docker logs redis-prod | tail -n 20确认出现Ready to accept connections,再docker exec redis-prod redis-cli -a 123654 ping返回PONG。
三、常见卡点与绕过方式
- 镜像加载后
docker images不显示?检查 tar 包是否损坏,或执行docker load时路径写错(别漏-i); - 容器秒退?大概率是
redis.conf里写了daemonize yes—— Docker 容器前台运行要求主进程不 daemon 化; - 连不上 6379?确认
bind 0.0.0.0(非127.0.0.1),且宿主机防火墙放行该端口(iptables -I INPUT -p tcp --dport 6379 -j ACCEPT); - 想批量启多个服务?别
docker run堆砌,用docker-compose up -d,但docker-compose.yml中所有image:必须指向已加载的本地镜像名,不要带localhost:5000/前缀(除非你真搭了私有 registry)。
不复杂但容易忽略。











