局域网部署docker服务器:
一、整体架构与角色划分(先明确边界)
1️⃣ 拉取服务器(Build / Pull 节点)
定位
-
允许频繁
docker restart / reboot -
可访问公网(或代理)
-
专门负责:
-
docker pull -
docker save -
镜像归档、校验
-
特点
-
不承载任何生产业务
-
出问题可随时重建
-
可以是虚机 / 物理机 / 临时节点
2️⃣ 生产服务器(Runtime 节点)
定位
-
只做:
-
docker load -
docker run / compose up
-
-
不直接 pull 公网镜像
-
不允许无计划重启 Docker
特点
-
服务稳定优先
-
镜像来源可控、可审计
二、拉取服务器的标准化准备步骤
Step 1:安装 Docker(最小化)
# Rocky / openEuler / RHEL 系
dnf install -y docker
systemctl enable docker --nowStep 2:配置镜像加速(强烈建议)
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.ccs.tencentyun.com"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
EOFsystemctl restart docker
三、镜像拉取与固化流程(核心)
Step 3:明确镜像清单(非常关键)
不要随手 pull
必须形成一个镜像清单文件示例:
images.txtnginx:1.24
redis:7.2
postgres:15.6
jumpserver/jms_all:v3.10.6Step 4:拉取镜像(带校验)
while read img; do
docker pull "$img"
done < images.txtdocker images
Step 5:镜像重新打 tag(推荐)
避免生产环境 tag 混乱:
docker tag nginx:1.24 registry.local/nginx:1.24
docker tag redis:7.2 registry.local/redis:7.2(
registry.local只是逻辑前缀,不是真的仓库)Step 6:镜像导出(save)
单镜像导出(调试用)
docker save nginx:1.24 -o nginx_1.24.tar生产推荐:一次性打包
docker save \
nginx:1.24 \
redis:7.2 \
postgres:15.6 \
-o prod_images_2026-01-28.tar压缩(可选):
xz -T0 prod_images_2026-01-28.tar
# 或
gzip prod_images_2026-01-28.tarStep 7:生成校验文件(强烈建议)
sha256sum prod_images_2026-01-28.tar.xz \
> prod_images_2026-01-28.tar.xz.sha256四、传输到生产服务器
推荐方式:
scp prod_images_2026-01-28.tar.xz root@prod:/opt/docker-images/
scp prod_images_2026-01-28.tar.xz.sha256 root@prod:/opt/docker-images/或:
-
内网 SFTP
-
内网对象存储
-
NAS / NFS
五、生产服务器加载流程(零影响)
Step 8:校验完整性
cd /opt/docker-images
sha256sum -c prod_images_2026-01-28.tar.xz.sha256Step 9:加载镜像(不会影响正在运行容器)
xz -d prod_images_2026-01-28.tar.xz
docker load -i prod_images_2026-01-28.tar⚠️ 关键认知:
docker load不会重启 Docker daemon
不会中断任何正在运行的容器Step 10:确认镜像已就绪
docker images | grep nginx六、生产部署时的规范(你这个方案的“闭环”)
强制原则
-
❌ 生产机 禁止 docker pull
-
✅ 只允许
docker load -
✅ docker-compose / run 使用 明确版本 tag
-
❌ 禁止
latest
示例:
services:
web:
image: nginx:1.24七、进阶增强方案(你以后一定会用到)
方案 A:私有 Registry(推荐规模化后)
在拉取服务器上部署:
docker run -d \
--name registry \
-p 5000:5000 \
-v /data/registry:/var/lib/registry \
registry:2然后:
docker tag nginx:1.24 10.0.0.10:5000/nginx:1.24
docker push 10.0.0.10:5000/nginx:1.24生产服务器:
docker pull 10.0.0.10:5000/nginx:1.24
(此时 pull 走内网,不影响外网、不重启 Docker)方案 B:镜像交付目录规范
/docker-release/
├── 2026-01-28/
│ ├── images.tar.xz
│ ├── images.sha256
│ └── images.txt -
-
共有 0 条评论