直接用管道符传输镜像可跳过生成中间文件,省磁盘、提速度,适用于磁盘紧张或需快速迁移场景;支持本地直传、SSH跨主机推送及带gzip压缩的流式传输,还可通过命名管道实现异步协同。

直接用管道符(|)传输镜像,能跳过生成中间文件这一步,省空间、提速度,特别适合网络连通但磁盘紧张或需快速迁移的场景。
基础流式迁移:本地 save + load 管道直传
不写入磁盘,纯内存流转,两步完成:
- 终端1执行:
docker save nginx:latest | docker load - 终端2无需操作——命令在单 shell 中串行执行,输出直接被 load 消费
注意:该方式要求目标环境已存在对应镜像名/标签所需的依赖层,否则 load 会失败;适用于同一台机器上的“导出→加载”验证或临时复用。
跨主机实时迁移:SSH 管道一键推送
把本地镜像直接传到远程主机并加载,全程不落地:
- 运行:
docker save redis:alpine | ssh user@192.168.1.100 'docker load' - 确保远程主机 Docker 正常运行,且用户有执行
docker load权限(通常需加入docker用户组)
数据经 SSH 加密传输,适合内网可信环境。若提示 permission denied,检查远程 ~/.docker/config.json 是否干扰,或改用 ssh -T 跳过 TTY 分配。
带压缩的流式传输:减小带宽压力
对大镜像(如含 JDK 或数据库的镜像),加压缩能明显缩短传输时间:
- 本地压缩发送:
docker save mysql:8.0 | gzip | ssh user@host 'gunzip | docker load' - 两端都需安装
gzip/gunzip,Docker 18.09+ 均支持流式输入解析
压缩比取决于镜像内容,一般可减少 30%–60% 体积;若传输不稳定,可加 pv 查看实时速率,或用 mbuffer 缓冲防断流。
命名管道(FIFO)实现异步双端协同
当 save 和 load 需要独立控制时机(比如 load 端准备较慢),用命名管道更灵活:
- 创建管道:
mkfifo /tmp/img.pipe - 后台启动导出:
docker save nginx:latest > /tmp/img.pipe & - 稍后加载:
docker load
关键点:save 必须加 & 后台运行,否则会阻塞等待读端打开;管道文件本身不占磁盘空间,仅作通信桥梁。


















