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

`docker commit` 和 `docker save`区别

理解 docker commitdocker save 之间的区别对于正确管理 Docker 镜像非常重要。让我们详细解释一下这两个命令的作用及其区别。

1. docker commit

作用

  • docker commit roop-builder roop:v1 命令的作用是基于一个正在运行的容器 roop-builder 创建一个新的镜像 roop:v1
  • 这个命令会捕获容器在执行时的状态,包括文件系统的更改、环境变量、用户设置等,并将其保存为一个新的镜像。

结果

  • 新的镜像 roop:v1 会存储在本地 Docker 的镜像存储目录中。
  • 你可以使用 docker images 命令查看这个镜像。

用途

  • 适用于在容器中进行了一些更改后,想要将这些更改保存为一个新的镜像,以便后续使用或分享。

2. docker save

作用

  • docker save -o roop.tar roop:cuda118-py310 命令的作用是将本地的镜像 roop:cuda118-py310 保存为一个 tar 归档文件 roop.tar
  • 这个命令不会基于容器创建新的镜像,而是将已经存在的镜像导出为文件。

结果

  • 生成的 roop.tar 文件包含了镜像的所有层和元数据。
  • 你可以将这个 tar 文件传输到其他机器上,并使用 docker load 命令导入。

用途

  • 适用于备份镜像、传输镜像到其他机器或存储镜像以供后续使用。
  • 例如,你可以在没有网络连接的环境中,通过物理介质传输镜像。

3. 二者之间的区别

特性docker commitdocker save
操作对象基于一个正在运行的容器创建一个新的镜像将一个已经存在的镜像保存为一个 tar 文件
用途捕获容器的当前状态并创建新的镜像备份、传输或存储镜像
输出新的镜像存储在本地 Docker 镜像存储中生成的 tar 文件可以存储在任何地方
使用场景在容器中进行了一些更改后,想要保存这些更改需要将镜像传输到其他机器或进行备份
命令示例docker commit container_name new_image:tagdocker save -o image_file.tar image:tag
反向操作docker images 查看新镜像,docker run 使用新镜像docker load -i image_file.tar 导入镜像

4. 具体例子解释

  • docker commit roop-builder roop:v1

    • 你在 roop-builder 容器中进行了一些更改(例如,安装了软件包、修改了配置文件等)。
    • 使用 docker commit 命令将这些更改保存为一个新的镜像 roop:v1
    • 这个镜像会存储在本地 Docker 的镜像存储目录中。
  • docker save -o roop.tar roop:cuda118-py310

    • 你已经有一个名为 roop:cuda118-py310 的镜像。
    • 使用 docker save 命令将该镜像保存为一个 tar 文件 roop.tar
    • 这个 tar 文件可以用于备份或传输到其他机器上。

5. 总结

  • docker commit 是基于一个容器创建一个新的镜像,适用于捕获容器的当前状态。
  • docker save 是将一个已经存在的镜像保存为一个 tar 文件,适用于备份或传输镜像。

理解这两者的区别可以帮助你更有效地管理和使用 Docker 镜像。如果你需要将镜像从一台机器传输到另一台机器,或者进行备份,使用 docker savedocker load 是合适的选择。如果你只是想在容器中进行一些更改并保存这些更改,使用 docker commit 更为合适。

http://www.xdnf.cn/news/9988.html

相关文章:

  • 每日c/c++题 备战蓝桥杯(P1011 [NOIP 1998 提高组] 车站)
  • 论文速读《UAV-Flow Colosseo: 自然语言控制无人机系统》
  • If possible, you should set the Secure flag for these cookies 修复方案
  • 操作系统原理第8章:文件管理 重点内容
  • 2025.05.30【转录组】|Ribo-seq数据流程详解(一 质量控制)
  • split_conversion将json转成yolo训练用的txt,在直接按照8:1:1的比例分成训练集,测试集,验证集
  • RuoYi前后端分离框架集成手机短信验证码(二)之前端篇
  • 学习vue3阶段性复习(插槽,Pinia,生命周期)
  • VSCode+Cline 安装配置及使用说明
  • vue+threeJs 绘制3D圆形
  • Linux 的主要时钟类型
  • 菜鸟之路Day36一一Web开发综合案例(部门管理)
  • ARXML解析与可视化工具
  • 硬件学习笔记--64 MCU的ARM核架构发展及特点
  • CentOS 7 环境中部署 LNMP(Linux + Nginx + MySQL 5.7 + PHP)
  • AI科技前沿动态:5.26 - 5.30 一周速览
  • Jetson Orin Nano - SONY imx415 camera驱动开发
  • 2025年5月24号高项综合知识真题以及答案解析(第1批次)
  • redis未授权(CVE-2022-0543)
  • Jvm 元空间大小分配原则
  • LeetCode 高频 SQL 50 题(基础版)之 【连接】部分 · 下
  • SolidWorks 文件打开时电脑卡顿问题分析与解决
  • 脱发因素机器学习数据分析
  • Windows10下使用QEMU安装Ubuntu20.04虚拟机,并启用硬件加速
  • Numpy 数组操作:高效的数据处理利器
  • 【AI赋能,视界升级】智微智能S134 AI OPS,重构智慧大屏未来
  • 『uniapp』添加桌面长按快捷操作 shortcuts(详细图文注释)
  • uniapp使用Canvas生成电子名片
  • 华为交换机命令:display css status
  • IDEA 在公司内网配置gitlab