docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker镜像离线迁移

Docker镜像指南之从核心命令到离线迁移实战

作者:敲上瘾

Docker镜像为只读分层文件,包含应用及依赖,通过联合文件系统实现高效共享和构建,其不可变特性确保跨环境一致性,简化标准化交付,提升部署效率,支持离线迁移,接下来通过本文给大家介绍Docker镜像指南之从核心命令到离线迁移实战,感兴趣的朋友跟随小编一起看看吧

Docker镜像是什么?

  Docker镜像本质是一个只读文件。它包含了创建Docker容器所需的全部文件和配置信息,除应用程序本身(例如一个编译好的Jar包),还包含了应用程序运行所需的所有依赖项(如操作系统、运行时环境、系统工具、库文件等)。

核心特性与详细解释

分层结构

只读性(Read-Only)

内容可寻址(Content-Addressable)

基于联合文件系统(Union File Systems)

为什么要使用镜像?

  最核心的理由是:镜像提供了一种标准化的、轻量级的、不可变的交付物,它保证了应用在任何环境中都能以完全一致的方式运行,从而实现了“构建一次,随处运行”。

下面我们从几个关键角度来详细拆解为什么要使用镜像:

  1. 解决环境一致性难题(“在我这儿是好的!”)
    这是使用镜像最首要、最直接的原因。

传统痛点:

这就是经典的“ works on my machine ”问题。

镜像的解决方案:

  1. 实现极致的标准化和交付简化

镜像成为一种通用的、标准的软件交付物。

这个命令包含了下载、解压、配置、运行所有步骤。它极大地简化了部署流程,降低了运维成本和对运维人员技能的要求。

镜像相关的命令

关于loginpullpush等命令的解析请参考:Docker核心概念与镜像仓库操作指南

docker rmi

功能:删除镜像。
语法:

docker rmi [OPTIONS] IMAGE [IMAGE...]  

别名:docker image rmdocker image remove
关键参数:

示例:

注意:被引用的镜像无法被删除,需要先关闭相应的容器。

示例:

  1. 重新拉取镜像:docker pull busybox:1.36.0 busybox:1.36.0
  2. 启动容器:docker run -it --name mybox busybox:1.36.0 sh
  3. 删除镜像:docker rmi busybox:1.36.0
  4. 删除容器:docker rm mybox
  5. 再次删除镜像:docker rmi busybox:1.36.0
  6. 查看镜像信息:docker images busybox

注意:镜像有多个标签时,指定镜像标签所删除的只是标签,镜像并没删除,在使用该镜像的容器在运行,只是不能再用标签管理,只能使用ID
docker save
功能:将指定镜像保存成 tar 归档文件。
语法:

docker save [OPTIONS] IMAGE [IMAGE...]  

别名:docker image save
关键参数:

示例:

docker load
功能:导入使用 docker save 命令导出的镜像。
语法:

docker load [OPTIONS]  

别名:docker image load
关键参数:

示例:

  1. 删除原有镜像
  2. 导入镜像

docker history
功能:展示的是镜像的构建历史记录
语法:

docker history [OPTIONS] IMAGE

别名:docker image history
关键参数:

示例:

docker image prune
功能:删除不使用的镜像。
语法:docker image prune [OPTIONS]
关键参数:

离线迁移镜像

  离线迁移镜像指的是在没有网络连接或无法直接访问镜像仓库(如Docker Hub、Harbor)的环境下,将Docker镜像从一台机器转移到另一台机器的过程。
  它不通过网络拉取(docker pull),而是先将镜像打包成一个离线文件(如.tar归档文件),然后通过物理媒介(如U盘、移动硬盘)或内部文件传输方式,将这个文件复制到目标机器上,最后再加载到目标机器的Docker环境中。
  这里使用scp把镜像从一个服务器拷贝到另一个服务器,这个过程的镜像数据流是在两个服务器之间直接通过SSH协议传输的,完全走的是内部的网络通道,与外部互联网隔离。

  1. 导出镜像:docker save -o mybox2.0 busybox:1.35.0
  2. 拷贝到另一台服务器:scp docker mybox2.0 root@服务器IP:要拷贝到的目录
  3. 另一台服务器把镜像导出:docker load -i mybox2.0

到此这篇关于Docker镜像指南之从核心命令到离线迁移实战的文章就介绍到这了,更多相关Docker镜像离线迁移内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文