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

55 lines
1.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

下面是压缩Docker镜像为分块压缩包及合并的命令
---
### **1. 压缩并分割镜像**
#### **推荐方式:直接通过管道压缩并分块**
使用 `gzip` 压缩(速度快,中等压缩率):
```bash
docker save <IMAGE_NAME:TAG> | gzip | split -b 5G - image_part_.gz
```
或使用 `xz` 压缩(高压缩率,速度慢):
```bash
docker save <IMAGE_NAME:TAG> | xz -T0 | split -b 5G - image_part_.xz
```
**参数说明**
- `<IMAGE_NAME:TAG>`:替换为实际的镜像名称和标签。
- `split -b 5G`将输入流分割为每块最大5GB。
- `image_part_.gz``image_part_.xz`:分块文件前缀,生成的文件名类似 `image_part_.gz.aa``image_part_.gz.ab` 等。
---
### **2. 合并分块并还原镜像**
#### **gzip 压缩分块的合并与加载**
```bash
cat image_part_.gz.* | gunzip | docker load
```
#### **xz 压缩分块的合并与加载**
```bash
cat image_part_.xz.* | xz -d | docker load
```
---
### **工作原理**
1. **压缩分块**
- `docker save` 输出镜像的 TAR 存档到标准输出。
- 通过管道将 TAR 数据实时压缩(`gzip``xz`)。
- `split` 将压缩后的流按 `5G` 大小分割为多个文件。
2. **合并还原**
- `cat` 按顺序合并所有分块文件。
- `gunzip``xz -d` 解压合并后的流。
- `docker load` 从解压后的 TAR 流中加载镜像。
---
### **注意事项**
- **分块命名**`split` 默认生成 `aa`, `ab` 等后缀。若分块超过几百个,需用 `-a <长度>` 指定后缀长度(如 `-a 3` 生成 `001`)。
- **磁盘空间**:合并时需要足够的临时空间存储解压后的完整 TAR 数据如原镜像为24GB需至少24GB空间
- **压缩选择**
- `gzip`:速度较快,适合快速处理。
- `xz`压缩率更高尤其适合二进制数据但需要更多时间和CPU资源。