首页
学习
活动
专区
工具
TVP
发布

Docker镜像详谈(2): 深入理解镜像大小

镜像示意图如下: 有了 Dockerfile 与镜像关系的初步认识之后,我们再进一步联系到每一层镜像大小。 不得不说,在层级化管理的 Docker 镜像中,有不少层大小都为 0。...,如以上命令 ADD run.sh /,新构建的那层镜像大小为文件 run.sh 的大小。...依然以上图为例:如果 ubuntu:14.04 镜像大小为 200 MB,而 run.sh 的大小为 5 MB,那么以上三层镜像从上到下,每层大小依次为 0、0 以及 5 MB,那么最终构建出的镜像大小的确为...虽然最终镜像大小是每层镜像的累加,但是需要额外注意的是,Docker 镜像大小并不等于容器中文件系统内容的大小(不包括挂载文件,/proc、/sys 等虚拟文件)。...0,镜像大小为 300 MB; ADD compressed.tar /:compressed.tar 文件为 100 MB,因此当前镜像层的大小为 300 MB + 100 MB,镜像大小为 400

1.9K20
您找到你想要的搜索结果了吗?
是的
没有找到

优化 Docker 镜像大小常见方法

本文将介绍几种常用的方法来优化 Docker 镜像大小,这里我们使用 Docker Hub 官方上的 Redis 镜像进行说明。...104MB 变成了 28.2MB,大大降低了镜像大小。...使用 distroless 镜像来降低 Docker 镜像大小是一个非常有效的方法,但是这样做也有一个明显的缺点就是最终的镜像中没有 shell 程序了,使得调试 Docker 容器就非常非常困难,当然这样也降低了应用被攻击的危险...Linux 使用较小的 musl C 库代替 glibc,并将其静态链接,这意味着针对 musl 编译的程序将变成可重定位的 (relocatable)的二进制文件,从而无需包含共享对象,从而可以显著降低镜像大小...通过上面的命令创建的 Redis 镜像大小约为 70MB,和原本的镜像相比有明显的减少,虽然比 distroless 和 Alpine 方法创建的镜像稍大,但使用 Guinx 确实提供了一些其他的优点。

97830

docker多阶段构建减小镜像大小

Docker多阶段构建是一个优秀的技术,可以显著减少 Docker 镜像大小,从而加快镜像的构建速度,并减少镜像的传输时间和存储空间。本文将详细介绍 Docker 多阶段构建的原理、用途以及示例。...这样做的问题是,每个层都会添加额外的文件和元数据到镜像中,因此镜像大小会变得非常大。当需要传输这些镜像到其他地方时,这会消耗大量的时间和网络带宽。...为了解决这个问题,Docker 多阶段构建提供了一种方法来构建一个 Docker 镜像,该镜像只包含必要的文件和元数据,而不包含多余的信息。...这样,您就可以在不增加镜像大小的情况下构建出一个可靠的 Docker 镜像。Docker 多阶段构建的用途Docker 多阶段构建的主要用途是减少 Docker 镜像大小。...由于每个阶段只包含必要的文件和元数据,所以您可以显著减少 Docker 镜像大小,并加快构建速度。

66800

10 个优化技巧,减少 Docker 镜像大小

在本文中,我们将讨论 10 种减少 docker 镜像大小的有效方法。 1:最小化镜像层 我们可以减少 Dockerfile 中的层数。...2:使用 Docker Squash 减小镜像大小 Docker 在构建镜像时创建了很多层。压缩有助于在逻辑层中组织镜像。我们可以控制镜像的结构,而不是让镜像具有多个不必要的层。...python:3.9 的大小约为 1.3 GB,而 python:3.9-slim 的大小仅为 1 GB 左右。 您可以使用 alpine 版本进一步减少镜像。...它将 Dockerfile 分成多个阶段,并将所需的工件从一个阶段传递到另一个阶段,然后在最后一个阶段交付缩小镜像大小的最终镜像。它显着减小镜像尺寸。...使用 --no-install-recommends 标志可以显着减小镜像大小

43130

如何通过Dockerfile优化Nestjs构建镜像大小

如果你想直接复制最终的Dockerfile,请直接跳到文章末尾开始编写Dockerfile每个镜像都可以视为一个单独的软件包,你可以通过编写Dockerfile告诉docker如何来打包镜像让我们开始编写吧...,目前镜像大小是1.24G,噢,上帝,真是太大了!...让我们来看看之前编写的Dockerfile,看如何对它进行优化使用Alpine node镜像强烈推荐使用node:18-alpine 而不是node:18,使用alpine的镜像可以直接把镜像体积从1.24g.../复制代码使用多阶段构建在Dockerfile中,你可以定义多阶段构建,这是一种通过多个镜像构建出最优镜像的方式,可以使得最后生成的镜像最小化#################### BUILD FOR...同时创建一个用于生产的优化Docker镜像

2.4K40

10 个优化技巧,减少 Docker 镜像大小

在本文中,我们将讨论 10 种减少 docker 镜像大小的有效方法。 1:最小化镜像层 我们可以减少 Dockerfile 中的层数。...2:使用 Docker Squash 减小镜像大小 Docker 在构建镜像时创建了很多层。压缩有助于在逻辑层中组织镜像。我们可以控制镜像的结构,而不是让镜像具有多个不必要的层。...python:3.9 的大小约为 1.3 GB,而 python:3.9-slim 的大小仅为 1 GB 左右。 您可以使用 alpine 版本进一步减少镜像。...它将 Dockerfile 分成多个阶段,并将所需的工件从一个阶段传递到另一个阶段,然后在最后一个阶段交付缩小镜像大小的最终镜像。它显着减小镜像尺寸。...使用 --no-install-recommends 标志可以显着减小镜像大小

2.9K20

优化 ASP.NET Core Docker 镜像大小

那么有什么办法来缩小我们打出来的镜像吗?最小能缩小到多少呢?这篇文章就来介绍下如何缩小asp.net core 打包出来镜像大小。 新建asp.net core 程序 ?...使用docker images命令查看镜像大小,这个镜像大小为210MB。果然比上面的镜像小了很多。那么是否还能继续缩小镜像大小呢?继续往下看。...5.0-alpine 除了使用buster-slim镜像,我们还可以选择更加小巧的alpine镜像来打包。alpine镜像是继续alpine linux创建的镜像,所以它更加轻量级更加小巧。...使用docker images命令查看镜像大小,这个镜像大小为108MB。现在这个镜像已经比我们第一次打包减少了500多MB了。那么还能更小吗?请往下看。...使用docker images命令查看镜像大小,这个镜像大小为54.6MB。 总结 通过以上演示,我们的镜像大小从一开始的600多MB缩小到了54MB。

2.2K20

如何将JVM Docker镜像大小减少至少60%

由于这一决定,许多Java开发工具包(JDK)Docker镜像分发商(例如:OpenJDK、Amazon Correto等)不提供JRE作为单独的Docker镜像,使用这些镜像整体Docker镜像大小约为...在我看来,整个Docker镜像大小太大了,应用减小它,以便为每个将使用该Docker镜像的人节省空间和网络带宽。现在,让我们看看如何大幅减小Docker镜像大小。...许多JDK镜像提供商都遵循相同的理念,省略JRE发行版。不幸的是,使用此类镜像会显着增加Docker镜像大小。...Dockerfile并检查镜像大小。...通用JRE,通用JRE的镜像大小比slim JRE稍大,但包含了所有的Java模块。 由您决定哪个 JRE 最适合您的应用程序。但是,无论使用哪种选项,您都可以大幅减小镜像大小

55030

Docker 封装java镜像

一、概述 目前java采用的框架是Spring,服务器直接通过 java -jar xxx.jar 就可以启动服务了。 二、jdk镜像 在docker中跑java应用,需要有jdk环境支持才行。...获取jdk镜像,有2种方式。 1. 自己制作jdk镜像 2. 使用Docker Hub 现成的jdk镜像。 首先说明一下,自己制作jdk镜像。...如果基础镜像采用centos,ubuntu,那么制作出来的镜像会特别大。 Alpine只有5M,可以通过作为基础镜像,来制作镜像。但是会有2个问题:1. 直接调用java命令会报错。2....而且,镜像本身,也做了优化。只有68M左右,非常小。 三、封装java镜像 有了jdk镜像后,封装java就简单多了。...EXPOSE 8080 ENTRYPOINT [ "java", "-jar", "RMS.jar" ] 注意:这个jar启动,会监听8080端口。 RMS.jar是已经打包好的java应用。

3.9K20

java工程镜像瘦身

前言从研发到发布,试图挖掘一下产品瘦身可能性,并提出“java公司化代码”思路来改造我们的代码。现状跟负责打包发布的同事了解咨询,镜像下载优化遇到瓶颈。...慢:早10点高峰期,奇慢无比宕机:偶尔宕机1到2个小时优化走到头:申请更大的带宽,优化镜像仓库物理配置,杯水车薪,跟不上更多的项目更大的包,钱花了听不到响镜像一般大小情况前端工程:10~20M后端工程:...三种依赖操作先说开发中的3种形态,受这3种思想影响,最终导致工程镜像的膨胀程度。搬运这种就喊口号“不要重复造轮子”,“节省开发时间,提高开发效率”,依赖进来,拿来主义,用就行了。...前端:grunt , gulp,webpack, rollup生成简洁代码托管代码剥离:Unity托管代码剥离,不仅可以减少生成的dll的大小,继而减少安装包的体积;托管代码剥离过程将分析项目中的程序集...一个成熟的java代码公司,就需要有自己的代码积木构建,备好所有零部件,登记备案。一、可以避免知识产权纠纷;二、所有工程按需引入积木构建,最少可用,为工程镜像瘦身提供极致可能。

87140

通过多阶段构建减小Golang镜像大小

我们如何通过引入具有多阶段构建过程的Dockerfiles来减小Golang镜像大小?...我会说不,因为生成的镜像大小超过300MB(确切地说是322MB),因为它包含了所有的Golang工具,这对我们来说是不必要的,因为我们指示编译器禁用cgo(CGO_ENABLED=0)并静态链接任何将为我们提供自包含可执行文件的...C绑定(其大小仅为6.05MB!)...现在镜像大小已降至11.7MB。 这个好到足够了吗? 我会说是的,但是为了实验的缘故,我们还是尽量挑战一下极限。...这些特殊情况很少见,所以在为了仅仅5.36MB(实际上是alpine:latest的大小,如果你仔细想想,这本身就是相当了不起的事情)而给自己找麻烦之前,要三思。

5710
领券