当前位置: 首页 > news >正文

Docker将镜像搬移到其他服务上的方法

导出/加载镜像(保留分层、标签)和导出/导入容器快照(仅文件系统,丢失镜像历史与标签)。

一、把镜像打包带走(推荐)

适合把一个或多个镜像搬到离线/内网机器,保留分层与标签。

  1. 在源服务器导出(可压缩)
# 单个镜像
docker image save -o myapp_v1.2.tar myrepo/myapp:1.2# 多个镜像一起导出
docker image save -o pack.tar myrepo/myapp:1.2 redis:7-alpine nginx:1.27# 管道压缩(体积更小)
docker image save myrepo/myapp:1.2 | gzip > myapp_v1.2.tar.gz
  1. 传到目标服务器
    任选其一:scp/rsync/U盘等
scp myapp_v1.2.tar.gz user@target:/tmp/
  1. 在目标服务器加载
# 若是压缩包
gunzip /tmp/myapp_v1.2.tar.gz
docker image load -i /tmp/myapp_v1.2.tar# 或者直接管道
gzip -dc /tmp/myapp_v1.2.tar.gz | docker image load
  1. 验证并运行
docker images | grep myapp
docker run --rm myrepo/myapp:1.2 --version

📌 小贴士

  • tar 内已包含标签;加载后会出现同名镜像与标签。若需要改名:

    docker tag myrepo/myapp:1.2 registry.local/myapp:1.2
    
  • 大文件可拆分传输:

    split -b 2G myapp_v1.2.tar myapp.part.
    cat myapp.part.* > myapp_v1.2.tar
    
  • 校验完整性:

    sha256sum myapp_v1.2.tar  # 源与目标对比
    

二、直接通过 SSH “边导边载”(省文件落地)

# 从源机把镜像流式传到目标机并加载
docker image save myrepo/myapp:1.2 | ssh user@target 'docker image load'

三、导出/导入“容器快照”(不是镜像)

如果你想把正在运行或运行过的容器的文件系统(含运行期数据的修改)打包走,用 export/import。注意:这不会保留镜像分层、历史、ENV、CMD 等元数据。

  1. 在源服务器导出容器(先找容器名/ID)
docker ps -a
docker export -o myapp-rootfs.tar CONTAINER_ID_OR_NAME
  1. 传到目标服务器后导入成“新镜像”
docker import myapp-rootfs.tar myapp:from-export
  1. 运行时需自己补齐启动命令/环境变量/端口等:
docker run -e FOO=bar -p 8080:8080 myapp:from-export my_start_cmd --args

四、另一种思路:用镜像仓库同步

如果目标环境能访问源仓库或私有仓库,这是最省事的做法:

# 源机打标签并推送到私有仓库
docker tag myrepo/myapp:1.2 registry.local/myapp:1.2
docker login registry.local
docker push registry.local/myapp:1.2# 目标机拉取
docker login registry.local
docker pull registry.local/myapp:1.2

五、常见问题排查

  • no space left on device:目标机磁盘或 Docker 数据分区不足,清理后重试:

    docker system df
    docker system prune -af    # ⚠ 会删未使用对象,谨慎
    
  • open ... permission denied:确保当前用户能访问 tar 文件路径,必要时用 sudo

  • manifest unknown:从仓库拉取时的标签错误或未推送该标签,先 docker images 核对。

  • SELinux/权限导致加载失败:尝试放到 /tmp 或关闭强制策略测试。

如果你告诉我要搬运的镜像列表、体积和网络情况(能否 SSH/能否访问仓库),我可以按你的场景给一套最省事的命令串。


文章转载自:

http://JePiDDpE.dfygx.cn
http://tPYjsDkn.dfygx.cn
http://QIYx5UXI.dfygx.cn
http://WDcKo3MF.dfygx.cn
http://GakYxoXY.dfygx.cn
http://T3GYSybX.dfygx.cn
http://GVlPvRor.dfygx.cn
http://oev0GOXS.dfygx.cn
http://0l2qRqlB.dfygx.cn
http://P2pAhjQ1.dfygx.cn
http://KtiTUWt7.dfygx.cn
http://uuP1Y3BQ.dfygx.cn
http://bHDweJX2.dfygx.cn
http://fTwD3FNQ.dfygx.cn
http://gfQYF9cl.dfygx.cn
http://p2cHQJLV.dfygx.cn
http://KRRcS7ug.dfygx.cn
http://8NnvSZiW.dfygx.cn
http://IUge60ds.dfygx.cn
http://TmP7bdFv.dfygx.cn
http://uYYDA8gI.dfygx.cn
http://7G7S9d1p.dfygx.cn
http://VpVEQ4XV.dfygx.cn
http://AeYWeSlQ.dfygx.cn
http://p6BcGzYD.dfygx.cn
http://GeBMs3LC.dfygx.cn
http://pk04sLJL.dfygx.cn
http://4TIscO5v.dfygx.cn
http://emMqe4w5.dfygx.cn
http://FVlw8ZIb.dfygx.cn
http://www.dtcms.com/a/384349.html

相关文章:

  • WiseAI-百度研发的AI智能聊天产品
  • .NET驾驭Word之力:理解Word对象模型核心 (Application, Document, Range)
  • 【JAVA接口自动化】JAVA如何读取Yaml文件
  • Redis全面指南:从入门到精通
  • Word在WPS和Office中给图片添加黑色边框
  • C++ Lua组合拳:构建高性能系统配置管理框架
  • 数据库编程--完成简单的信息登录系统+思维导图
  • Spring Boot 深入剖析:SpringApplicationRunListener
  • 【新手指南】解析Laf.run上的GET API接口
  • 如何批量删除 iPhone/iPad 上的照片 [7 种方法
  • Spring Boot 日志体系全面解析:从 SLF4J 到 Logback、Log4j2 与 Lombok 超详细!!
  • springboot创建请求处理
  • 08-Redis 字符串类型全解析:从命令实操到业务场景落地
  • 学习海康VisionMaster之字符缺陷检测
  • CAD画图:002软件界面操作
  • 解锁全球业务潜能:AWS全球网络加速解决方案深度解析
  • HTTPS Everywhere 是什么?HTTPS 插件作用、iOS 抓包失败原因解析与常见抓包工具对比
  • 【C++】STL详解(七)—stack和queue的介绍及使用
  • 20250912在荣品RD-RK3588-MID开发板的Android13系统下拿掉卡迪屏的reset引脚的下拉复位波形
  • 在线图书借阅平台的设计与实现 —— 基于飞算JavaAI的实战开发全流程与优化实践
  • Git : 分支管理和远程仓库
  • 当传统金融遇上AI智能:AIStock系统深度技术解析
  • 大数据如何捕捉你的爱好?如何实现跨站用户行为分析?
  • 用OpenCV CSRT实现实时目标跟踪
  • 13.Linux OpenSSH 服务管理
  • 微算法科技(NASDAQ: MLGO)研发基于量子密钥图像的量子图像加密算法,提供更高安全性的图像保护方案
  • LAMP 环境部署
  • Java程序设计:Eclipse 安装和使用
  • ZooKeeper 集群高可用配置指南
  • 在天嵌 TQ3568 (Debian) 上配置并添加打印机教程