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

【容器使用】如何使用 docker 和 tar 命令来操作容器镜像

好的,我们来详细讲解一下如何使用 dockertar 命令来操作容器镜像。

这主要涉及两个核心操作:

  1. 将容器保存/导出为 tar 文件(用于备份、迁移或离线分享)。
  2. tar 文件加载/导入镜像(用于恢复或部署)。

1. 将容器/镜像打包成 tar 文件

有两种主要命令可以实现这个目的:docker exportdocker save。它们有重要区别:

特性docker savedocker export
操作对象镜像 (Image)容器 (Container)
输出内容保存镜像的所有、标签、历史记录只导出容器当前文件系统的快照
是否包含元数据 (如标签、历史命令、层结构)
典型用途备份镜像,以便在其他地方恢复部署一个纯净的应用,不包含构建历史
1.1 使用 docker save 将镜像打包成 tar

这是最常用的方法,用于备份或迁移镜像。

基本语法:

docker save -o <输出的tar文件名>.tar <镜像名>:<标签>

操作示例:

  1. 查看本地镜像,确认你要打包的镜像名称和标签。

    docker images
    # 输出示例:
    # REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
    # nginx        latest    2b7d6430f78d   2 weeks ago    142MB
    # ubuntu       20.04     6b7dfa7e8fdb   4 weeks ago    77.8MB
    
  2. nginx:latest 镜像保存为 nginx_backup.tar 文件。

    docker save -o nginx_backup.tar nginx:latest
    
    • -o--output:指定输出文件的路径和名称。
  3. 你也可以将多个镜像打包到一个 tar 文件中。

    docker save -o my_images.tar nginx:latest ubuntu:20.04
    
  4. 使用 gzip 压缩以减小文件体积(推荐)。

    docker save nginx:latest | gzip > nginx_backup.tar.gz
    
1.2 使用 docker export 将容器打包成 tar

这个方法用于导出某个容器的文件系统状态。

基本语法:

docker export -o <输出的tar文件名>.tar <容器名或容器ID>

操作示例:

  1. 查看正在运行的容器,找到你要导出的容器 ID 或名称。

    docker ps
    # 如果容器已停止,可以查看所有容器
    docker ps -a
    
  2. 假设有一个容器 ID 为 a1b2c3d4,将其导出为 my_container.tar

    docker export -o my_container.tar a1b2c3d4
    

2. 从 tar 文件加载/导入镜像

同样,根据你使用的打包方法,也有两种对应的加载命令。

2.1 使用 docker load 导入由 save 创建的 tar 文件

这是恢复镜像的标准方法。

基本语法:

docker load -i <镜像tar文件>

操作示例:

  1. nginx_backup.tar 文件加载镜像。
    docker load -i nginx_backup.tar
    
    • -i--input:指定要加载的 tar 文件。

在这里插入图片描述

  1. 如果文件是 .tar.gz 格式,也可以直接加载。

    docker load -i nginx_backup.tar.gz
    
  2. 查看加载的镜像,确认是否成功。

    docker images
    

    加载的镜像会保留其原来的名称和标签。

在这里插入图片描述

2.2 使用 docker import 导入由 export 创建的 tar 文件

这个方法会将一个文件系统快照导入为一个新的镜像

基本语法:

docker import <容器tar文件> [新镜像名]:[新标签]

操作示例:

  1. my_container.tar 文件创建一个新的镜像,并命名为 my_imported_image:v1

    docker import my_container.tar my_imported_image:v1
    
  2. 查看新创建的镜像。

    docker images
    
  3. 运行这个新镜像来启动一个容器。

    docker run -it my_imported_image:v1 /bin/bash
    

    注意:由 export/import 创建的镜像不包含任何原始命令历史或元数据,你可能需要在 docker run 时指定要运行的命令(如 /bin/bash)。


操作流程总结

场景一:备份和恢复一个镜像(最常用)
  1. 备份: docker save -o my_app.tar my_app:prod
  2. my_app.tar 文件拷贝到另一台机器。
  3. 恢复: docker load -i my_app.tar
  4. 运行: docker run -d my_app:prod
场景二:将一个容器的当前状态固化为新镜像
  1. 对容器进行了一些修改(例如安装了软件)。
  2. 导出: docker export -o container_snapshot.tar my_container
  3. 导入为镜像: docker import container_snapshot.tar my_new_image:latest
  4. 基于新镜像运行: docker run -it my_new_image:latest /bin/bash

重要提示

  • 权限: 操作 docker 命令通常需要 sudo 权限或加入 docker 用户组。
  • 空间: 确保磁盘有足够空间存放 tar 文件,尤其是镜像较大时。
  • 命令区分: 牢记 save/load 针对的是镜像,而 export/import 针对的是容器。混淆它们会导致操作失败或丢失元数据。
  • 压缩: 使用 gzip 压缩(生成 .tar.gz)可以显著减少文件大小,节省传输时间和存储空间。docker load 可以直接读取压缩文件。

文章转载自:

http://VDR1HzCU.yLkkh.cn
http://VdmcqOXD.yLkkh.cn
http://6XGOK9bq.yLkkh.cn
http://WMVOZNrn.yLkkh.cn
http://qbsLK9NL.yLkkh.cn
http://sWTE0HlM.yLkkh.cn
http://vmq4XCbf.yLkkh.cn
http://SVl5ppmT.yLkkh.cn
http://E7UyyMYP.yLkkh.cn
http://6pORLOaq.yLkkh.cn
http://l7zNvbez.yLkkh.cn
http://OVwqfNfk.yLkkh.cn
http://IibktTYm.yLkkh.cn
http://NzRhmqxY.yLkkh.cn
http://75jsqzQF.yLkkh.cn
http://YRQ5FG3K.yLkkh.cn
http://KruSxHLg.yLkkh.cn
http://yLpuuVaW.yLkkh.cn
http://UIltHBXY.yLkkh.cn
http://1nSqCNNX.yLkkh.cn
http://D7ZZd0gA.yLkkh.cn
http://R8q3PlV1.yLkkh.cn
http://YuTxMUp7.yLkkh.cn
http://7vWKpzDt.yLkkh.cn
http://bMSpNus5.yLkkh.cn
http://njStdkce.yLkkh.cn
http://CtlliU2V.yLkkh.cn
http://ThaoSaLy.yLkkh.cn
http://DXj7R1d0.yLkkh.cn
http://vcSB4NCK.yLkkh.cn
http://www.dtcms.com/a/378562.html

相关文章:

  • 科普:在Windows个人电脑上使用Docker的极简指南
  • 【面试场景题】电商订单系统分库分表方案设计
  • 微服务保护全攻略:从雪崩到 Sentinel 实战
  • springcloud二-Sentinel
  • Redis 持久化与高可用实践(RDB / AOF / Sentinel / Cluster 全解析)
  • Semaphore 信号量深度解析
  • 门店网络重构:告别“打补丁”,用“云网融合”重塑数字竞争力!
  • Linux操作系统之Ubuntu
  • WSL自定义安装多个相同版本的Ubuntu子系统
  • 晶振在5G时代的角色:高精度时钟的核心支撑
  • 【JavaEE】(25) Spring 原理
  • 【科研绘图系列】R语言绘制模型预测与数据可视化
  • 音频中的PDM、PCM概念解读
  • 离线应用开发:Service Worker 与缓存
  • 1、RocketMQ概念详解
  • ZooKeeper Multi-op+乐观锁实战优化:提升分布式Worker节点状态一致性
  • 使用yolo算法对视频进行实时目标跟踪和分割
  • Tomcat日志乱码了怎么处理?
  • 新手该选哪款软件?3ds Max vs Blender深度对比
  • 剧本杀小程序系统开发:构建线上线下融合的剧本杀生态圈
  • 常用加密算法之 AES 简介及应用
  • 【SQL注入系列】JSON注入
  • 盲盒抽卡机小程序:从0到1的蜕变之路
  • 设计模式(C++)详解—工厂方法模式(1)
  • 【Proteus仿真】【51单片机】教室灯光控制器设计
  • java语言中,list<String>转成字符串,逗号分割;List<Integer>转字符串,逗号分割
  • Jenkins运维之路(Jenkins流水线改造Day01)
  • 9月11日星期四今日早报简报微语报早读
  • 阿里兵临城下,美团迎来至暗时刻?
  • 学习笔记:Javascript(5)——事件监听(用户交互)