docker之容器commit迭代更新后体积大小不翻倍

2024-06-01 04:18

本文主要是介绍docker之容器commit迭代更新后体积大小不翻倍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用docker经常会遇到这样的问题,基础镜像几百兆,在容器中安装了几个软件,然后commit到镜像。后来删除了一些内容,再次commit成镜像。发现。根本不会变小,而且会越来越大。

其实,commit,顾名思义,就是把当次的修改提交。体现在docker镜像中,就是新的一层。

imagepng

 

在 Dockerfile 中, 每一条指令都会创建一个镜像层,继而会增加整体镜像的大小。而commit也是层的增加。

 

这其实也很好理解,例如git,你对某个文件增加了一行,又删除了一这一行,虽然最新版文件看起来没有了,但其实历史还是被记录下来。

手里的这个环境并没有原始的Dockerfile,并不知道从第一版到现在做了什么。所以干脆从零开始,把当前的容器直接做成基础镜像

不在废话,直接开始:

  1. 查看当前目录,删除不需要内容(容器中)

    #进入根目录
    cd / 
    #查看各个目录体积
    du -h -d 1
    
  2. 一顿删除操作猛如虎

  3. 打包当前容器

    # 根目录下:
    tar --exclude=/proc --exclude=/sys --exclude=base_img.tar -cvf base_img.tar .
    
  4. 退出容器,拷贝压缩包

    # 退出
    exit# copy
    docker cp [容器id]:/base_img.tar .
    
  5. 导入容器

    # 导入
    cat base_img.tar|docker import - base_img
    
  6. 对比:

    # 直观上体积减少了
    docker images# history,只有一个记录:Imported from -
    docker history [新镜像id]

这篇关于docker之容器commit迭代更新后体积大小不翻倍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1019964

相关文章

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

docker 重命名镜像的实现方法

《docker重命名镜像的实现方法》在Docker中无法直接重命名镜像,但可通过添加新标签、删除旧镜像后重新拉取/构建,或在DockerCompose中修改配置文件实现名称变更,感兴趣的可以了解一下... 目录使用标签(Tagging)删除旧的php镜像并重新拉取或构建使用docker Compose在Do

Java JUC并发集合详解之线程安全容器完全攻略

《JavaJUC并发集合详解之线程安全容器完全攻略》Java通过java.util.concurrent(JUC)包提供了一整套线程安全的并发容器,它们不仅是简单的同步包装,更是基于精妙并发算法构建... 目录一、为什么需要JUC并发集合?二、核心并发集合分类与详解三、选型指南:如何选择合适的并发容器?在多

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

Spring Boot中获取IOC容器的多种方式

《SpringBoot中获取IOC容器的多种方式》本文主要介绍了SpringBoot中获取IOC容器的多种方式,包括直接注入、实现ApplicationContextAware接口、通过Spring... 目录1. 直接注入ApplicationContext2. 实现ApplicationContextA

linux配置podman阿里云容器镜像加速器详解

《linux配置podman阿里云容器镜像加速器详解》本文指导如何配置Podman使用阿里云容器镜像加速器:登录阿里云获取专属加速地址,修改Podman配置文件并移除https://前缀,最后拉取镜像... 目录1.下载podman2.获取阿里云个人容器镜像加速器地址3.更改podman配置文件4.使用po

k8s容器放开锁内存限制问题

《k8s容器放开锁内存限制问题》nccl-test容器运行mpirun时因NCCL_BUFFSIZE过大导致OOM,需通过修改docker服务配置文件,将LimitMEMLOCK设为infinity并... 目录问题问题确认放开容器max locked memory限制总结参考:https://Access

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke