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

Docker镜像远程(离线)迁移教程

文章目录

  • 一、大致步骤
  • 二、涉及工具:scp命令
    • 命令介绍:
    • 命令语法
  • 三、实操
    • 编写bash脚本
    • 使用演示

一、大致步骤

  1. 把本地服务器的指定镜像打包为tar格式的文件
  2. 把tar格式文件通过scp命令(linux自带)拷贝到另一台服务器
  3. 通过ssh远程控制服务器加载tar文件为镜像

二、涉及工具:scp命令

命令介绍:

SCP(Secure Copy),是linux/unix系统下,基于ssh协议协议的文件加密传输命令。
他有一下特点:

  • 安全加密:依赖ssh协议(默认22端口),全过程加密(先非对称+对称加密)
  • 跨主机通用:本地->远程 远程->本地 远程->远程
  • 易用性:linux自带的命令,不用安装默认工具,且大部分服务器防火墙默认允许scp文件传输,不需要额外配置防火墙

命令语法

scp[可选参数]要传输的本地文件/目录 远程用户@远程IP:远程目标路径
  • 可选参数:-r可以递归传输文件
  • 远程用户:一般默认root,因为只有root才有最高权限
  • 远程IP:服务器的IP地址
  • 远程目标路径:目标服务器要下载该文件的文件夹路径

三、实操

编写bash脚本

这里可以不用脚本写,按照命令一步步来也行,不过为了更好的演示步骤,俺在这里就通过脚本的方式呈现给大家:

#!/bin/bash# 脚本名称:transfer-docker-image.sh#配置信息REMOTE_USER="root"#远程服务器用户名REMOTE_IP="113.44.150.39"#远程服务器IPREMOTE_PATH="/root/remote_scp"#远程服务器的文件夹地址IMAGE_NAME="depoy-app:latest"#要传输的镜像TAR_FILE="depoy-app.tar"# 要打包成的tar文件echo"=== Docker镜像传输开始 ==="# 1. 保存镜像echo"1. 保存镜像到本地文件..."dockersave-o"$TAR_FILE""$IMAGE_NAME"echo" 文件大小:$(ls-lh"$TAR_FILE"|awk'{print $5}')"# 2. 传输文件echo"2. 传输到远程服务器..."echo" 目标:$REMOTE_USER@$REMOTE_IP:$REMOTE_PATH/"scp"$TAR_FILE""$REMOTE_USER@$REMOTE_IP:$REMOTE_PATH"# 3.验证传输是否正常ssh"$REMOTE_USER@$REMOTE_IP""ls -lh$REMOTE_PATH"# 4. 在线解压为镜像ssh"$REMOTE_USER@$REMOTE_IP""docker load -i$REMOTE_PATH/$TAR_FILE"

注意
每次执行scp命令都要填写远程服务器密码,这是为了防止中间人攻击(底层ssh协议)

使用演示

1、 执行脚本

chmod+x transfer-docker-image.sh#赋予可执行权限,即使不用bash命令,也可执行bash脚本bashtransfer-docker-image.sh# 通过bash命令执行bash脚本(保险)===Docker镜像传输开始===1. 保存镜像到本地文件... 文件大小: 502M2. 传输到远程服务器... 目标: root@113.44.150.39:/root/remote_scp/ The authenticity ofhost'113.44.150.39 (113.44.150.39)'can't be established. ED25519 key fingerprint is SHA256:pXZUvDvhC0aVaE3cH8WNtn4LMf9IUk0W7DUsnN/5IMg. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '113.44.150.39' (ED25519) to the list of known hosts. root@113.44.150.39's password: depoy-app.tar100% 502MB1.4MB/s 06:07 root@113.44.150.39's password: total 502M -rw------- 1 root root 502M Jan 31 16:21 depoy-app.tar root@113.44.150.39's password: Loaded image: depoy-app:latest

2、查看远程服务器,tar文件和镜像已经回显:

pwd#查看远程服务器地址是否匹配/root/remote_scpls-lhtotal 502M -rw-------1root root 502M Jan3116:21 depoy-app.tar root@hcss-ecs-d15b:~/remote_scp# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE depoy-app latest 911decca43034months ago 522MB

http://www.jsqmd.com/news/471787/

相关文章:

  • 震动传感器(STM32)
  • (一)基础:线性模型
  • Python爬虫实战:逆向解包 Unsplash 官方编辑精选合集!
  • 上海/北京高端腕表维修指南:江诗丹顿/欧米茄常见故障与科学养护解析 - 时光修表匠
  • React Hooks 设计思想与自定义 Hook 开发实践
  • V8引擎深度解密:Isolate隔离机制如何保障多环境安全执行
  • CSP与Nonce集成实战:Next.js、Nuxt、Remix官方方案详解
  • C语言完美演绎3-12
  • 2026年Shulex VOC优惠折扣码最新更新 | 功能详细拆解 - 麦麦唛
  • OpenClaw 第二篇:核心架构拆解——从一句指令到自动执行的全流程
  • API实战:CUDA实现数组求和—— 综合使用内存API、内核API、事件API,对比串行/并行性能
  • React Context API:状态管理与性能优化的探索
  • 2026连云港装修公司综合评分推荐:一份基于20+数据维度的权威报告 - GEO排行榜
  • 磁盘分区与文件系统
  • ArrayList动态扩容机制
  • 化繁为简:Access 与 SQL 创新指南(第一篇)
  • Vue 3 Composition API 的逻辑复用模式探索
  • 中国国家级地面气象站基本气象要素日值数据集(V3.0)
  • Netty源码分析---waken方法详解
  • Python爬虫实战:鸣枪起跑!深度抓取全国马拉松赛事报名情报!
  • Vue 响应式原理与依赖追踪机制解析
  • 请求报错:cannot deserialize from Object value (no delegate- or property-based Creator)
  • 为什么你“什么都知道”,却依然炒不好股?
  • 1377605-22-5,Biotinylated isoxazole 在相分离凝聚物药物筛选中的前景
  • JavaScript 异步编程:Promise 与 async/await 的探索
  • TensorRT C++部署流程
  • Linux-C socket网络通信 03.25
  • 一键解锁 N 种快乐, 蘑兔ai音乐也太会了
  • PDF.js实战:教你给企业官网嵌入可定制化的PDF阅读器(附源码)
  • JavaScript 事件循环机制与宏任务/微任务解析