Docker 镜像减少体积的思路和方法
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 镜像减少体积的思路和方法的更多相关文章
- Docker镜像拉取慢的解决方法
镜像加速器配置: 下文配置引用于阿里云说明文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 1. 安装/升级Docker客户 ...
- 多阶段构建Golang程序Docker镜像
Docker简介 Docker是基于Linux容器技术(LXC),使用Go语言实现的开源项目,诞生于2013年,遵循Apache2.0协议.Docker自开源后,受到广泛的关注和讨论. Docker在 ...
- Docker镜像的构建(五)
目录 构建镜像 1.使用 commit 命令构建 1.1 运行一个要进行修改的容器 1.2 安装 Apache 软件包 1.3 提交定制容器 2.使用 Dockerfile 构建 2.1 我们的第一个 ...
- 精简Docker镜像的五种通用方法
http://dockone.io/article/8163 精简Docker镜像的好处很多,不仅可以节省存储空间和带宽,还能减少安全隐患.优化镜像大小的手段多种多样,因服务所使用的基础开发语言不同而 ...
- 前端 Docker 镜像体积优化
如果 2019 年技术圈有十大流行词,容器化肯定占有一席之地,随着 Docker 的风靡,前端领域应用到 Docker 的场景也越来越多,本文主要来讲述下开源的分布式图数据库 Nebula Graph ...
- docker镜像瘦身思路
docker镜像瘦身思路 一.简介 docker镜像太大,带来了以下几个问题: 存储开销 这块影响其实不算很大,因为对服务器磁盘来说,15GB的存储空间并不算大,除非用户服务器的磁盘空间很紧张 部署时 ...
- 制作nginx+php的docker镜像方法
制作nginx+php的docker镜像方法一.准备安装的工具工具:docker-17.06.0-ce.nginx-1.13.2.PHP-5.5.38 .supervisor配置思路:1.安装dock ...
- 优化 Docker 镜像大小常见方法
平时我们构建的 Docker 镜像通常比较大,占用大量的磁盘空间,随着容器的大规模部署,同样也会浪费宝贵的带宽资源.本文将介绍几种常用的方法来优化 Docker 镜像大小,这里我们使用 Docker ...
- 简单谈谈Docker镜像的使用方法_docker
在上篇文章(在Docker中搭建Nginx服务器)中,我们已经介绍了如何快速地搭建一个实用的Nginx服务器.这次我们将围绕Docker镜像(Docker Image),介绍其使用方法.包括三部分: ...
- 方法2:使用Jenkins构建Docker镜像 --SpringCloud
前提意义: SpringCloud微服务里包含多个文件夹,拉取仓库的所有代码,然后过根据选项参数使用maven编译打包指定目录的jar,然后再根据这个目录的Dockerfile文件制作Docker镜像 ...
随机推荐
- HOCON:nginx配置文件后缀conf是什么格式类型文件夹?intellij如何编辑
nginx的配置为*.conf ,这个conf是么子文件?之前确实不清楚. HOCON 简介HOCON(Human-Optimized Config Object Notation)是一个易于使用的配 ...
- 开心档之MySQL 数据类型
MySQL 数据类型 MySQL 中定义数据字段的类型对你数据库的优化是非常重要的. MySQL 支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL 支持所有 ...
- ByteHouse:基于ClickHouse的实时数仓能力升级解读
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 ByteHouse是火山引擎上的一款云原生数据仓库,为用户带来极速分析体验,能够支撑实时数据分析和海量数据离 ...
- 剖析字节案例,火山引擎 A/B 测试 DataTester 如何“嵌入”技术研发流程
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 日前,在 WOT 全球创新技术大会上,火山引擎 DataTester 技术负责人韩云飞做了关于字节跳动 A/B 测 ...
- 火山引擎数智平台 VeDI 帮助智能投影仪更懂用户需求
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 当露营成为年轻人的一种全新生活方式后,连带着户外野营帐篷.可折叠桌椅.卡式炉.多人趣味桌游等露营周边市场都迎来新一 ...
- Mapper that could not be found
现象1 mapper 资源扫不到 resources 建的是 目录 ,不是 package 所以如果直接 a.b 的方式创建,会扫描不到 mapper.xml 文件 现象2 缺少配置文件 HisDru ...
- python发送邮件+多人+附件 !!!!
import smtplib import os from email.header import Header from email.mime.text import MIMEText # shen ...
- Mongodb--用户/权限
mongodb分为管理员用户和普通用户,并且还有个验证库,建立用户时use到的库(验证库),信息就存储在admin数据库下. 在使用用户时,要加上验证库才能登录,对于管理员用户,必须在admin下创建 ...
- SAP发布HTTP接口
1.创建类 引用标准接口 改写集成的接口方法 此处仅实现POST方法,将传入的JSON报文转为函数传入参数,调用获取物料接口,并将返回的物料信息,转换为JSON报文返回 METHOD if_http_ ...
- Step by step guide to becoming a C++ developer in 2023
https://roadmap.sh/cpp https://roadmap.sh/backend