Docker 镜像减少体积的思路和方法


背景

有一个项目感觉镜像有点大
这边同事喊着一起帮忙处理一下.
今天基本上就在客户现场进行处理了.
想着应该把自己想到的东西整理一下.

整体思路

1. 清理dockerfile 同级目录内的文件, 仅保留必须文件
docker build 时会进行send file的操作, 不进行send 能够提高镜像制作的速度.
2. 通过.dockerignore 的方式减少打包进入到系统中的文件
通过 ./相对路径/xxx/支持 * 等的方式不将文件打入到镜像中. 避免镜像过于庞大.
3. 通过分阶段构建, 先将必要的比如nodejs, 语言, 字体等基于OpenJDK制作成一个nodejs的镜像.
通过分阶段构建, 可以减少镜像的总体时间. 业务镜像可以From nodejs的镜像实现快速打包.
4. 分层构建. 按照业务进行拆分. 可以横向和纵向拆分.
业务可以在一层, 也可以是多层. 拆分SU的话能够极大的减少的镜像的体积.
5. 导出时采用 docker save images:tag |gzip > image_withCOmpress.tar
这样方式能够达到37%到45%的压缩率. 虽然可能会增加50%的导出时间, 但是网络消耗时间会有极大的提升.

部分细节

1. 复制文件进入镜像后, 必须在同一层执行删除, 如果进入第二层再删除, 镜像文件就不会有缩减了.
2. 尽量使用ADD的方式, 避免使用方式一里面的COPY方式. 避免组件浪费磁盘空间.
3. .dockerignore 的方式很重要, 需要严格进行处理和学习. 根据业务来处理. 支持
4. 每一步骤都需要进行time 或者是留下痕迹.

Docker 镜像减少体积的思路和方法的更多相关文章

  1. Docker镜像拉取慢的解决方法

    镜像加速器配置: 下文配置引用于阿里云说明文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 1. 安装/升级Docker客户 ...

  2. 多阶段构建Golang程序Docker镜像

    Docker简介 Docker是基于Linux容器技术(LXC),使用Go语言实现的开源项目,诞生于2013年,遵循Apache2.0协议.Docker自开源后,受到广泛的关注和讨论. Docker在 ...

  3. Docker镜像的构建(五)

    目录 构建镜像 1.使用 commit 命令构建 1.1 运行一个要进行修改的容器 1.2 安装 Apache 软件包 1.3 提交定制容器 2.使用 Dockerfile 构建 2.1 我们的第一个 ...

  4. 精简Docker镜像的五种通用方法

    http://dockone.io/article/8163 精简Docker镜像的好处很多,不仅可以节省存储空间和带宽,还能减少安全隐患.优化镜像大小的手段多种多样,因服务所使用的基础开发语言不同而 ...

  5. 前端 Docker 镜像体积优化

    如果 2019 年技术圈有十大流行词,容器化肯定占有一席之地,随着 Docker 的风靡,前端领域应用到 Docker 的场景也越来越多,本文主要来讲述下开源的分布式图数据库 Nebula Graph ...

  6. docker镜像瘦身思路

    docker镜像瘦身思路 一.简介 docker镜像太大,带来了以下几个问题: 存储开销 这块影响其实不算很大,因为对服务器磁盘来说,15GB的存储空间并不算大,除非用户服务器的磁盘空间很紧张 部署时 ...

  7. 制作nginx+php的docker镜像方法

    制作nginx+php的docker镜像方法一.准备安装的工具工具:docker-17.06.0-ce.nginx-1.13.2.PHP-5.5.38 .supervisor配置思路:1.安装dock ...

  8. 优化 Docker 镜像大小常见方法

    平时我们构建的 Docker 镜像通常比较大,占用大量的磁盘空间,随着容器的大规模部署,同样也会浪费宝贵的带宽资源.本文将介绍几种常用的方法来优化 Docker 镜像大小,这里我们使用 Docker ...

  9. 简单谈谈Docker镜像的使用方法_docker

    在上篇文章(在Docker中搭建Nginx服务器)中,我们已经介绍了如何快速地搭建一个实用的Nginx服务器.这次我们将围绕Docker镜像(Docker Image),介绍其使用方法.包括三部分: ...

  10. 方法2:使用Jenkins构建Docker镜像 --SpringCloud

    前提意义: SpringCloud微服务里包含多个文件夹,拉取仓库的所有代码,然后过根据选项参数使用maven编译打包指定目录的jar,然后再根据这个目录的Dockerfile文件制作Docker镜像 ...

随机推荐

  1. Xshell与Xftp安装与使用

    Xshell与Xftp安装 软件安装:官网或者应用商店 安装结束 nslicense.dll替换 下载文件 使用 登录 双击刚刚建立的连接 表示建立成功 点击文件传输 右边就是服务器的文件,左边就是本 ...

  2. 游戏“外挂”?—— AI生成游戏最强攻略

    作为一名快乐的肥宅,玩游戏是居家必备,无论是王者荣耀.吃鸡.原神这些大热游戏,还是跳一跳.合成大西瓜.2048.这些风靡一时得小游戏,咱都有涉及.但是为了成为一个"头号玩家",我总 ...

  3. 鸿蒙轻内核源码分析:Newlib C

    摘要:本文介绍了LiteOS-M内核Newlib C的实现,特别是文件系统和内存分配释放部分,最后介绍了Newlib钩子函数. 本文分享自华为云社区<鸿蒙轻内核M核源码分析系列二十 Newlib ...

  4. Linux 升级安装 Python 3

    百度飞桨 PaddlePaddle 2.4.0 => Python 3.7.4 PaddlePaddle 2.4.1+ => Python 3.9.0 下载 # 安装依赖 [root@lo ...

  5. Axure 弹出框遮罩层灯箱效果

    灯箱效果:比较适合Web, 效果不太理想,还是自己做个比较合适 弹出效果:就是弹框 推动效果:A 元件显示的时候,把 B元件往下.右移动.如Web左侧菜二级单效果

  6. SQL Server 2016 自动备份、收缩数据库

    一般策略为:Oracle: 周一.二 增量备份,周三差异备份,周四.五.六增量备份,周日完整备份(建多计划) MsSQL: 周一.六差异备份,周日完整备份(建多计划) 打开SQL server配置管理 ...

  7. Python 异步编程之yield关键字

    背景介绍 在前面的篇章中介绍了同步和异步在IO上的对比,从本篇开始探究python中异步的实现方法和原理. python协程的发展流程: python2.5 为生成器引用.send()..throw( ...

  8. Flutter如何有效地退出程序

    今天博主来谈一个开发Flutter App的小技巧--怎样有效地退出程序. 这种方法典型的应用场景就是用户许可协议的同意与否.从用户的角度讲,虽然大部分人都会无脑点击"同意",但我 ...

  9. 2018年蓝桥杯B组C/C++国赛题解

    1.换零钞 x星球的钞票的面额只有:100元,5元,2元,1元,共4种. 小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱. 小明有点强迫症,他坚持要求200元换出 ...

  10. 2012年第三届蓝桥杯【C++省赛B组】

    第一题:微生物增殖 假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍). 一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1 ...