docker转移镜像

news2025/4/23 18:23:33

1、场景

  • 有网络环境向无网络环境转移镜像。
  • 无法拉取的镜像(外网无法访问)下载镜像转移到服务器上。

2、docker转移

2.1 镜像服务器

保存镜像

列出项目使用的所有镜像
docker images
保存所有镜像为 tar 文件

保存docker镜像

docker save -o my_project_images.tar my_project_images:1.0.0

    2.2 新服务器

    在新服务器上加载镜像

    docker load -i my_project_images.tar

    启动镜像

    docker run \
      --name my_project_images \
      -d \
      --restart always \
      my_project_images:1.0.0

    3、docker compose转移项目

    3.1 镜像服务器

    保存镜像

    列出项目使用的所有镜像

    在docker-compose.yml的目录下执行

    docker-compose images
    保存所有镜像为 tar 文件

    合并导出:保存docker-compose镜像,将所有镜像合并到一个 .tar 文件

    docker save -o my_project_images.tar $(docker-compose images | awk '{if(NR>2) print $2":"$3}')

    分文件导出‌:每个镜像单独保存(适合选择性迁移)

    docker-compose images -q | xargs -n 1 -I {} docker save {} -o ./images/{}.tar
    
    命令示例
    • docker-compose images | awk '{if(NR>2) print $2":"$3}'
      [root@ openmetadata-docker]# docker-compose images | awk '{if(NR>2) print $2":"$3}'
      WARN[0000] /root/openmetadata-docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion 
      docker.elastic.co/elasticsearch/elasticsearch:8.11.4
      docker.getcollate.io/openmetadata/ingestion:1.6.8
      docker.getcollate.io/openmetadata/db:1.6.8
      docker.getcollate.io/openmetadata/server:1.6.8
    • docker-compose images -q | xargs -n 1 
      [root@ images]# docker-compose images -q | xargs -n 1
      WARN[0000] /root/openmetadata-docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion 
      4128d7bbe2a1bcbad0a05a2a6af72b98b6f2ae6752fa9446b5c8eef9a1af4769
      8759d2faeffbc4797832aa90ef5b88c1f40af72e6f8b0b0de42703f32fa9d67b
      b7c0bf7f2e52cb9b9a4b1dd6cd82c7e6b6f01895832391974d2c70144425ac60
      15eb21ac0f7eedc6c62fbf1f444d6ed0cd47d99faa7fa7404af0916c67163518
      

      3.2 新服务器

      在新服务器上加载镜像

      docker load -i my_project_images.tar

      启动镜像

      确定已复制 docker-compose.yml 文件到新服务器

      docker-compose up -d

      3.3 注意事项

      1. 镜像与配置一致性:确保目标服务器的 docker-compose.yml 中 image: 名称和标签与导出的镜像完全匹配,否则 Docker 会尝试从仓库拉取。

      2. 依赖环境

        • 目标服务器需安装 ‌Docker‌ 和 ‌Docker Compose‌。
        • 文件路径和卷挂载(如 volumes:)需适配目标服务器的目录结构。

      4、私服方式

      4.1 镜像服务器

      登录仓库

      docker login [仓库地址]  # 不指定地址则默认为Docker Hub
      # 示例(Docker Hub):
      docker login -u 你的用户名
      # 示例(私有仓库):
      docker login registry.example.com -u 用户名 -p 密码

      查看现有镜像

      docker images
      docker-compose images  # 如果是docker-compose项目

      为镜像打标签

      格式:docker tag 本地镜像[:标签] 仓库地址/用户名/仓库名[:标签]

      # 为单个镜像打标签示例:
      docker tag my-app:1.0 mydockerhub/my-app:1.0
      
      # 为docker-compose项目所有镜像打标签:
      docker-compose build  # 确保镜像已构建
      docker-compose images | awk 'NR>2 {print $2":"$3}' | xargs -I {} docker tag {} mydockerhub/{}

      推送镜像到仓库

      # 推送单个镜像:
      docker push mydockerhub/my-app:1.0
      
      # 推送docker-compose项目所有镜像:
      docker-compose push  # 如果镜像已正确配置在compose文件中
      
      # 或者手动推送:
      docker images | grep "mydockerhub" | awk '{print $1":"$2}' | xargs -I {} docker push {}

      4.2 新服务器

      登录仓库

      docker login [仓库地址]

      拉取镜像

      # 单个镜像:
      docker pull mydockerhub/my-app:1.0
      
      # 使用docker-compose(需先复制compose文件):
      docker-compose pull
      # 启动
      docker-compose up -d

      5、文件分割上传

              当需要传输的 tar 文件过大时,可以将其分割成多个小文件分别传输,然后在目标服务器上重新组装。

      5.1 在源服务器上分割大文件

      使用 split 命令分割文件

      linux直接使用如下命令,windows使用 Git Bash执行如下命令

      # 将大文件分割成每个1GB的小文件(可根据需要调整大小)
      split -b 1G my_project_images.tar my_project_images.tar.part_

      验证分割结果

      ls -lh my_project_images.tar.part_*

      5.2 在目标服务器上重新组装文件

      使用 cat 命令合并文件 

      cat my_project_images.tar.part_* > my_project_images.tar

      验证合并后的文件完整性

      # 检查文件大小
      ls -lh my_project_images.tar

      本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2340961.html

      如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

      相关文章

      Spring Boot中`logging.config`配置项的详解及使用说明

      以下是Spring Boot中logging.config配置项的详解及使用说明: 1. logging.config 作用 功能:指定自定义日志配置文件的路径,覆盖Spring Boot默认的日志配置。适用场景:当需要深度定制日志行为(如输出格式、文件路径、…

      相机模型--CMOS和CCD的区别

      1--CMOS和CCD的工作原理 CCD(Charge Coupled Device,电荷耦合器件): 1. 图像通过光电效应在感光单元中转化为电荷; 2. 每个像素上的电荷被依次“耦合”并传输到芯片的角落,通过一个或几个模拟输出放大器输…

      el-date-picker时间范围 赋值报错问题

      问题: 点击时间范围组件右边清除图标,点击近6小时会把设置好的时间赋值给时间范围组件 但是出现报错 原因: 尝试对null值进行属性设置操作:修改一个数组的元素,但此时这个数组是null,而不是预期的数组类型…

      为啥低速MCU单板辐射测试会有200M-1Ghz的辐射信号

      低速MCU(如8位或16位单片机)单板在辐射测试中出现 200MHz~1GHz的高频辐射信号,看似不合理,但实际上是由多种因素共同导致的。以下是详细原因分析及解决方案: 1.根本原因分析: (1) 时钟谐波与开关噪声 低速MCU的时钟谐…

      【音视频】FFmpeg解封装

      解封装 复用器,比如MP4/FLV 解复用器,MP4/FLV 封装格式相关函数 avformat_alloc_context(); 负责申请一个AVFormatContext结构的内存,并进行简单初始化avformat_free_context(); 释放该结构里的所有东西以及该结构本身avformat_close_input();关闭解复…

      OpenLDAP 管理 ELK 用户

      文章目录 一、新建 ELK 相关用户组二、配置 Elasticsearch2.1 修改 elasticsearch.yml 配置2.2 使用 API 接口建立角色和用户映射 三、Kibana 验证用户登录 一、新建 ELK 相关用户组 由于后续要将 LDAP 的用户与 ELK 的角色进行映射,所以需先创建几个以 ELK 的角色…

      第十七届“华中杯”大学生数学建模挑战赛题目A题 晶硅片产销策略优化 完整成品 代码 模型 思路 分享

      近年来,高纯度晶硅片需求的增长引发了更激烈的市场竞争。晶硅片企业需要在成本控制、利润优化和供需管理之间取得平衡,以提高经营效率和市场竞争力。晶硅片的生产是一个高能耗、高成本的过程,企业效益会受到原材料价格波动、市场需求变化以及…

      网络层理解

      网络层理解 网络层是 OSI 模型的第三层,主要负责 跨网络的数据传输,核心任务是 路由选择 和 分组转发。 网络层核心功能 网络层关键协议 协议作用示例IP (IPv4/IPv6)数据包路由和寻址192.168.1.1ICMP网络状态检测和错误报告ping、tracerouteOSPF/BGP动…

      从Archery到NineData:积加科技驱动数据库研发效能与数据安全双升级

      积加科技作为国内领先的企业级数字化解决方案服务商,依托自研的 A4X 数字化平台(https://a4x.io/),专注于为全球范围内的视觉物联网(IoT)设备提供 PaaS/SaaS 服务。致力于运用 AI 技术赋能物联网世界的各类…

      开源Midjourney替代方案:企业级AI绘画+PPT生成系统+AI源码

      「AI取代设计师?」开源Midjourney替代方案:企业级AI绘画PPT生成系统 ——零代码私有化部署,5倍速出图100%版权合规 设计师行业的危机与机遇 1. 传统设计流程的致命短板 痛点 人工设计 AI系统 单张海报耗时 3小时(含反复修改…

      2025.04.20【Lollipop】| Lollipop图绘制命令简介

      Customize markers See the different options allowing to customize the marker on top of the stem. Customize stems See the different options allowing to customize the stems. 文章目录 Customize markersCustomize stems Lollipop图简介R语言中的Lollipop图使用ggp…

      【Harmony】常用工具类封装

      文章目录 一,简介二,网络请求工具类2.1、鸿蒙原生http封装2.2、第三方axios封装(需提前下载依赖) 三、录音笔相关工具类3.1、录音封装(录入)3.2、录音封装(放音/渲染)3.3、文件写入封装(针对录音/放音功能) 四、RDB关系型数据库4.1、relationalStore简答…

      DCDC芯片,boost升压电路设计,MT3608 芯片深度解析:从架构到设计的全维度技术手册

      一、硬件架构解析:电流模式升压 converter 的核心设计 (一)电路拓扑与核心组件 MT3608 采用恒定频率峰值电流模式升压(Boost)转换器架构,核心由以下模块构成: 集成功率 MOSFET 内置 80mΩ 导通电阻的 N 沟道 MOSFET,漏极(Drain)对应引脚 SW,源极(Source)内部接…

      Cline 之Plan和Act模式

      Cline 提供了 "Plan & Act"双模式开发框架。适用在不同的场景。 一、核心模式理念 通过结构化开发流程提升AI编程效率,采用"先规划后执行"的核心理念。 该框架旨在帮助开发者构建更易维护、准确性更高的代码,同时显著缩短开发…

      【中级软件设计师】程序设计语言基础成分

      【中级软件设计师】程序设计语言基础成分 目录 【中级软件设计师】程序设计语言基础成分一、历年真题二、考点:程序设计语言基础成分1、基本成分2、数据成分3、控制成分 三、真题的答案与解析答案解析 复习技巧: 若已掌握【程序设计语言基础成分】相关知…

      C++项目 —— 基于多设计模式下的同步异步日志系统(3)(日志器类)

      C项目 —— 基于多设计模式下的同步&异步日志系统(3)(日志器类) 整体思想设计日志消息的构造C语言式的不定参函数的作用函数的具体实现逻辑1. 日志等级检查2. 初始化可变参数列表3. 格式化日志消息4. 释放参数列表5. 序列化和…

      【数学建模】随机森林算法详解:原理、优缺点及应用

      随机森林算法详解:原理、优缺点及应用 文章目录 随机森林算法详解:原理、优缺点及应用引言随机森林的基本原理随机森林算法步骤随机森林的优点随机森林的缺点随机森林的应用场景Python实现示例超参数调优结论参考文献 引言 随机森林是机器学习领域中一种…

      蓝桥杯 19.合根植物

      合根植物 原题目链接 题目描述 W 星球的一个种植园被分成 m n 个小格子(东西方向 m 行,南北方向 n 列)。每个格子里种了一株合根植物。 这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的…

      Linux环境MySQL出现无法启动的问题解决 [InnoDB] InnoDB initialization has started.

      目录 起因 强制启用恢复模式 备份数据 起因 服务器重启了,然后服务器启动完成之后我发现MySQL程序没有启动,错误信息如下: 2025-04-19T12:46:47.648559Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2025-04-1…

      高性能服务器配置经验指南1——刚配置好服务器应该做哪些事

      文章目录 安装ubuntu安装必要软件设置用户远程连接安全问题ClamAV安装教程步骤 1:更新系统软件源步骤 2:升级系统(可选但推荐)步骤 3:安装 ClamAV步骤 4:更新病毒库步骤 5:验证安装ClamAV 常用命…