Docker image 多阶构建(multstage build)

本文介绍了如何使用Docker的多阶构建(multistage build)来创建更小的image,以减少磁盘占用、网络带宽消耗和部署时间。多阶构建允许在同一个Dockerfile中分阶段进行构建,保留必要的文件并丢弃开发工具等额外内容,简化了之前依赖于多个Dockerfile和shell脚本的构建过程,提高了构建的效率和可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:https://docs.docker.com/develop/develop-images/multistage-build/

背景

过大的image占用更多的磁盘空间,push或者pull操作时占用更多的网络带宽,花费更长的时间。大规模的部署过程可能需要数个小时,大部分时间浪费在image的push与pull操作中,甚至因为短时间内流量的爆发而引起网络问题,最终导致部署失败。因此,我们应该尽量构建更小尺寸的image。

Iamge的构建过程写在Dockerfile文件中,文件中的每一条指令都会叠加一个新的层。相应地,缩小image的方法有两个,一个是尽量减少Dockerfile中指令的条数,指令条数越少,image中的层数就越少。另一个是精简每层的内容,使之只包含必要的东西。

为此在写Dockerfile时往往会利用SHELL脚本技巧,将多条命令连接成一条命令,并在其中加入一些逻辑。另外,可以将同一个image的Dockerfile分成两份,一个Dockerfile供开发者使用,里边包含开发套件、各种工具、运行时环境等一切构建、运行所需要的东西。另一个Dockerfile供部署人员使用,里边只包含开发者构建好的成果物及运行时环境,删除了开发套件、工具等开发人员才需要的东西,称之为建造者模式(builder pattern)。

构建者模式(builder pattern)

一个建造者模式的例子,首先有两份image构建文件,名称分别为Dockerfile.buildDockerfile。

D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值