一、核心操作流程
1. 本地下载并打包镜像
在可联网的电脑上操作:
# 拉取镜像(可配置代理加速)
docker pull nginx:latest
# 保存为 .tar 文件(支持多镜像合并打包)
docker save -o nginx.tar nginx:latest
# 多镜像示例:docker save -o all_images.tar nginx:latest redis:alpine
2. 传输镜像到服务器
选择以下任一种方式:
- SCP 命令传输(推荐内网使用):
scp nginx.tar user@服务器IP:/目标路径/
- SFTP/XFTP 工具(可视化操作)
- U盘/内网共享(物理隔离环境)
3. 服务器加载镜像
# 加载镜像(自动识别镜像名称和标签)
docker load -i /目标路径/nginx.tar
# 验证是否成功
docker images | grep nginx
二、进阶技巧与注意事项
1. 镜像管理优化
- 批量操作:合并多个镜像到单个文件,减少传输次数
- 重命名镜像:加载后可用
docker tag
重命名docker tag nginx:latest my-nginx:v1
2. 文件传输优化
- 压缩传输:对大镜像先压缩再传输(需服务器解压)
gzip nginx.tar # 压缩
scp nginx.tar.gz user@IP:/path/
gunzip nginx.tar.gz # 解压
3. 权限与路径规范
- 确保服务器目标目录有写入权限:
chmod 755 /目标路径
- 避免使用
/tmp
等临时目录,推荐专用存储路径(如/opt/docker_images
)
三、替代方案对比
方法 | 适用场景 | 优势 | 限制 |
---|---|---|---|
docker save/load | 单次迁移、内网环境 | 无需网络、操作简单 | 手动操作、镜像更新需重复流程 |
私有镜像仓库 | 团队协作、频繁更新 | 支持版本管理、自动化部署 | 需搭建维护仓库 |
Docker Export | 仅需容器快照(非完整镜像) | 文件体积小 | 丢失镜像历史、无法回滚 |
四、常见问题排查
- 镜像加载失败
- 检查文件完整性:
sha256sum nginx.tar
比对哈希值 - 确认 Docker 服务状态:
systemctl status docker
- 检查文件完整性:
- 空间不足
- 清理旧镜像:
docker system prune -a
- 清理旧镜像:
- 权限拒绝
- 使用
sudo
执行命令 - 添加用户到 docker 组:
sudo usermod -aG docker $USER
- 使用