Files
CmiiDeploy/66-202505-浙江二级监管/分块压缩合.md
2025-08-12 09:59:32 +08:00

1.9 KiB
Raw Blame History

下面是压缩Docker镜像为分块压缩包及合并的命令


1. 压缩并分割镜像

推荐方式:直接通过管道压缩并分块

使用 gzip 压缩(速度快,中等压缩率):

docker save <IMAGE_NAME:TAG> | gzip | split -b 5G - image_part_.gz

或使用 xz 压缩(高压缩率,速度慢):

docker save <IMAGE_NAME:TAG> | xz -T0 | split -b 5G - image_part_.xz

参数说明

  • <IMAGE_NAME:TAG>:替换为实际的镜像名称和标签。
  • split -b 5G将输入流分割为每块最大5GB。
  • image_part_.gzimage_part_.xz:分块文件前缀,生成的文件名类似 image_part_.gz.aaimage_part_.gz.ab 等。

2. 合并分块并还原镜像

gzip 压缩分块的合并与加载

cat image_part_.gz.* | gunzip | docker load

xz 压缩分块的合并与加载

cat image_part_.xz.* | xz -d | docker load

工作原理

  1. 压缩分块

    • docker save 输出镜像的 TAR 存档到标准输出。
    • 通过管道将 TAR 数据实时压缩(gzipxz)。
    • split 将压缩后的流按 5G 大小分割为多个文件。
  2. 合并还原

    • cat 按顺序合并所有分块文件。
    • gunzipxz -d 解压合并后的流。
    • docker load 从解压后的 TAR 流中加载镜像。

注意事项

  • 分块命名split 默认生成 aa, ab 等后缀。若分块超过几百个,需用 -a <长度> 指定后缀长度(如 -a 3 生成 001)。
  • 磁盘空间:合并时需要足够的临时空间存储解压后的完整 TAR 数据如原镜像为24GB需至少24GB空间
  • 压缩选择
    • gzip:速度较快,适合快速处理。
    • xz压缩率更高尤其适合二进制数据但需要更多时间和CPU资源。