首页 教程 开发工具 Docker保存镜像和导入镜像文件(图文详解)

Docker保存镜像和导入镜像文件(图文详解)

Docker保存镜像和导入镜像文件(图文详解)

Docker 保存和导入镜像文件是 Docker 镜像管理中的两个关键操作,它们在不同的场景下有着各自的意义和用途。以下是对这两个操作的详细说明:

1 基本命令介绍

1.1 Docker 保存镜像(docker save

命令格式:

docker save -o<输出文件路径><镜像名称>:<标签>

意义与用途:

  • 归档与备份docker save 命令用于将本地的 Docker 镜像导出为一个 tar 文件。这个文件包含了镜像的所有层以及元数据,如标签、配置信息等。通过这种方式,可以对重要的镜像进行归档或备份,防止因为意外删除或系统故障导致的数据丢失。

  • 迁移与分发:当需要将镜像从一台机器迁移到另一台机器时,尤其是在没有直接网络连接的情况下,可以使用 docker save 将镜像导出为文件,然后通过其他方式(如USB驱动器、FTP传输等)将该文件复制到目标机器上。这在离线环境中特别有用。

  • 版本控制:在某些情况下,你可能希望保留特定版本的镜像,以便在未来能够回滚到该版本。通过 docker save 可以创建这些版本的快照,确保任何时候都可以恢复到某个已知的良好状态。

  • 审计与合规性:对于企业级应用,有时需要对使用的镜像进行审计或验证其来源。通过保存镜像文件,可以在必要时检查镜像的内容,确保符合安全策略和法规要求。

1.2 Docker 导入镜像(docker load

命令格式:

docker load -i<输入文件路径>

意义与用途:

  • 恢复备份docker load 命令用于将之前使用 docker save 创建的 tar 文件重新加载到 Docker 中,使其成为可用的镜像。这对于从备份中恢复镜像非常有用,特别是在发生灾难恢复时。

  • 接收迁移的镜像:当从其他机器接收到镜像文件后,可以使用 docker load 将其导入本地 Docker 环境。这使得跨机器或跨环境的镜像共享变得简单易行。

  • 定制化镜像部署:如果你有一个经过特殊定制的镜像,并且希望将其部署到多个环境中,可以通过 docker savedocker load 组合来实现。例如,在开发完成后,可以将开发环境中的镜像导出,然后在测试或生产环境中导入,从而保证各个环境的一致性。

  • 绕过镜像仓库限制:有时候,由于网络问题或者镜像仓库的访问权限限制,无法直接从远程仓库拉取镜像。此时,可以先在有访问权限的环境中获取镜像并保存为文件,再通过 docker load 在受限环境中导入镜像。

  • 私有镜像的安全分发:对于包含敏感信息或专有技术的镜像,直接上传到公共镜像仓库可能存在安全风险。通过 docker savedocker load,可以在不公开镜像内容的前提下,安全地在受信任的合作伙伴之间分发镜像。

2 实际操作演示

2.1 准备环境

两台Ubuntu22.04 Server服务器或虚拟机,其中一台IP地址为:192.168.88.171,一台IP地址为192.168.3.228,且同时两台都已经安装好了docker环境。
假设模拟只有IP为192.168.88.171的服务器可对外连接互联网,192.168.3.228的服务器不能连接互联网,只跟192.168.88.171互联组成局域网。

服务器地址网络情况-外网网络情况-内网实际操作
192.168.88.171允许允许通过互联网下载并保存mysql8.0.34镜像
192.168.3.228允许通过内网其他服务器镜像源导入mysql8.0.34镜像
2.2 互联网拉取镜像源

在192.168.88.171拉取mysql8.0.34镜像

docker pull mysql:8.0.34

Docker保存镜像和导入镜像文件(图文详解)
查看当前docker的所有镜像源,可以看到已经下载了mysql8.0.34

docker images

Docker保存镜像和导入镜像文件(图文详解)

2.3 保存镜像源

1.单个镜像保存
在 Docker 中,保存镜像的命令是 docker save。这个命令可以将一个或多个镜像保存到一个 tar 归档文件中。以下是如何使用该命令的基本语法:

docker save -o<输出文件路径><镜像名称>[:<标签>]

保存192.168.88.171的mysql8.0.34镜像至根目录下的home文件夹

docker save -o /home/mysql8.0.34.tar mysql:8.0.34

进入home文件夹可以看到已经保存了mysql8.0.34.tar
Docker保存镜像和导入镜像文件(图文详解)
2.多个镜像保存
查看当前镜像文件,例如我们需要保存nacos和mysql8镜像(保存到同一个tar文件)

docker save -o /home/mysql_nacos_images.tar mysql:8.0.34 nacos/nacos-server:v2.1.1

Docker保存镜像和导入镜像文件(图文详解)
查看home目录下是否生成对应的tar文件
Docker保存镜像和导入镜像文件(图文详解)

2.4 导入镜像源

1.镜像源传输
scp 是一种基于 SSH 的安全文件复制协议,适用于 Linux、macOS 和 Windows(通过 WSL 或 Git Bash 等工具)。

从源服务器传输到目标服务器:

在源服务器上执行以下命令:

scp /path/to/nacos-server-v2.1.1.tar user@target-server:/path/to/destination/

  • /path/to/nacos-server-v2.1.1.tar 是源服务器上的文件路径。
  • user 是目标服务器的用户名。
  • target-server 是目标服务器的 IP 地址或主机名。
  • /path/to/destination/ 是目标服务器上的保存路径。

在192.168.88.171服务器上执行传输文件mysql_nacos_images.tar至192.168.3.228上

scp /home/mysql_nacos_images.tar root@192.168.3.228:/home/

输入目标服务器对应的用户名密码后即可开始传输
Docker保存镜像和导入镜像文件(图文详解)
传输完成后在192.168.3.228服务器上即可看到对应镜像源
Docker保存镜像和导入镜像文件(图文详解)

2.导入镜像源

在192.168.3.228服务器上使用 docker load 命令来加载镜像文件。如果你有一个未压缩的 .tar 文件,可以运行以下命令:

cd /home docker load -i mysql_nacos_images.tar

加载完毕后,会显示已经导入nacos与mysql8
Docker保存镜像和导入镜像文件(图文详解)
查看镜像源

docker images

Docker保存镜像和导入镜像文件(图文详解)
至此所有的演示过程已经完成

注意事项

  • 镜像大小:保存的镜像文件可能会非常大,特别是当镜像包含大量依赖项或数据时。因此,在导出和导入镜像时应考虑存储空间和传输带宽的问题。
  • 兼容性:虽然 Docker 的镜像格式具有良好的向后兼容性,但在不同版本的 Docker 之间迁移镜像时,仍需注意可能存在的兼容性问题。
  • 镜像优化:为了减少镜像文件的体积,可以在构建镜像时采用多阶段构建、清理不必要的文件等方式来优化镜像,使导出的文件更小,便于管理和传输。
评论(0)条

提示:请勿发布广告垃圾评论,否则封号处理!!

    猜你喜欢
    【MySQL】用户管理

    【MySQL】用户管理

     服务器/数据库  2个月前  2.18k

    我们推荐使用普通用户对数据的访问。而root作为管理员可以对普通用户对应的权限进行设置和管理。如给张三和李四这样的普通用户权限设定后。就只能操作给你权限的库了。

    Cursor Rules 让开发效率变成10倍速

    Cursor Rules 让开发效率变成10倍速

     服务器/数据库  2个月前  1.24k

    在AI与编程的交汇点上,awesome-cursorrules项目犹如一座灯塔,指引着开发者们驶向更高效、更智能的编程未来。无论你是经验丰富的老手,还是刚入行的新人,这个项目都能为你的编程之旅增添一抹亮色。这些规则文件就像是你私人定制的AI助手,能够根据你的项目需求和个人偏好,精确地调教AI的行为。突然间,你会发现AI不仅能理解Next.js的最佳实践,还能自动应用TypeScript的类型检查,甚至主动提供Tailwind CSS的类名建议。探索新的应用场景,推动AI辅助编程的边界。

    探索Django 5: 从零开始,打造你的第一个Web应用

    探索Django 5: 从零开始,打造你的第一个Web应用

     服务器/数据库  2个月前  1.16k

    Django 是一个开放源代码的 Web 应用程序框架,由 Python 写成。它遵循 MVT(Model-View-Template)的设计模式,旨在帮助开发者高效地构建复杂且功能丰富的 Web 应用程序。随着每个版本的升级,Django 不断演变,提供更多功能和改进,让开发变得更加便捷。《Django 5 Web应用开发实战》集Django架站基础、项目实践、开发经验于一体,是一本从零基础到精通Django Web企业级开发技术的实战指南《Django 5 Web应用开发实战》内容以。

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

     服务器/数据库  2个月前  1.09k

    mysql_secure_installation 是 MySQL 提供的一个安全脚本,用于提高数据库服务器的安全性

    【MySQL基础篇】概述及SQL指令:DDL及DML

    【MySQL基础篇】概述及SQL指令:DDL及DML

     服务器/数据库  2个月前  491

    数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库不仅仅是数据的简单堆积,而是遵循一定的规则和模式进行组织和管理的。数据库中的数据可以包括文本、数字、图像、音频等各种类型的信息。

    Redis中的哨兵(Sentinel)

    Redis中的哨兵(Sentinel)

     服务器/数据库  2个月前  316

    ​ 上篇文章我们讲述了Redis中的主从复制(Redis分布式系统中的主从复制-CSDN博客),本篇文章针对主从复制中的问题引出Redis中的哨兵,希望本篇文章会对你有所帮助。