Docker 镜像体积优化实践:从基础镜像重建到层压缩的全流程指南
创作时间:
作者:
@小白创作中心
Docker 镜像体积优化实践:从基础镜像重建到层压缩的全流程指南
引用
CSDN
1.
https://blog.csdn.net/qq_37160346/article/details/143434515
Docker镜像体积优化是提升容器部署效率的重要环节。本文将从基础镜像重建、Dockerfile优化以及镜像层压缩三个方面,详细介绍如何有效减小Docker镜像体积,提升打包发布流程的效率。
一、重做基础镜像
在优化过程中,我们首先需要重新构建一个更轻量的基础镜像。原基础镜像已经占用了500M的空间,因此我们选择使用Alpine Linux作为新的基础镜像,并在此基础上安装必要的组件。
以下是新的基础镜像Dockerfile:
FROM docker.m.daocloud.io/alpine:3.14
LABEL maintainer="傲寒 <wanngziyi@gmail.com>"
# 设置工作目录
WORKDIR /opt/aohan
COPY ./get-pip.py /opt/aohan/
COPY ./supercronic /usr/local/bin/supercronic
# 替换 Alpine 的默认镜像源为国内源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
# 安装openjdk8 python2
&& apk add --no-cache openjdk8 python2 shadow bash curl tzdata \
&& ln -sf /bin/bash /bin/sh \
&& chmod +x /usr/local/bin/supercronic \
# 安装pip
&& python get-pip.py -i https://pypi.tuna.tsinghua.edu.cn/simple \
&& rm get-pip.py \
&& pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ \
&& python2 -m pip install six requests jinja2
# 设置 环境变量
ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
ENV PATH=$JAVA_HOME/bin:$PATH
ENV PS1='[\u@\h \W]\$ '
# 默认命令
CMD ["/bin/bash"]
使用以下命令构建镜像:
docker build --no-cache -f ./Dockerfile-alpine-openjdk -t openjdk8-python2:v1.0.0 .
经过优化,新的基础镜像体积减少至200M,比之前缩小了近300M。
二、Dockerfile优化
在使用新的基础镜像后,我们还需要对应用的Dockerfile进行进一步优化:
- 合并指令:通过合并多个RUN指令,减少镜像层数。
- 删除临时文件:在构建过程中及时清理不必要的临时文件。
- 使用多阶段构建:将构建过程和运行时环境分离,避免不必要的依赖。
三、压缩镜像
1. docker-squash是什么?
docker-squash是一个用于压缩Docker镜像的工具。Docker镜像是由一系列的层(layers)组成的,在构建和使用过程中,这些层会逐渐累积。docker-squash可以将这些多层的Docker镜像压缩成一个单一层的镜像,从而减小镜像的大小。
2. 工作原理
当构建Docker镜像时,每一个指令(如RUN、COPY等)都会在基础镜像之上创建一个新的层。随着时间的推移和构建步骤的增加,镜像会包含许多层。docker-squash通过将这些层合并,消除了层与层之间的冗余部分。例如,如果一个镜像有多个层,其中有些层可能包含相同的文件或者依赖,docker-squash会把这些重复的部分整合,生成一个更紧凑的镜像。
3. 安装使用
pip install docker-squash
使用docker-squash压缩镜像:
docker-squash -t 新镜像名称 原镜像名称
经过压缩,镜像体积减少了36.9%,大约减少了600M,效果显著。
热门推荐
秋冬打卡东山岛:南门湾的日落与海鲜盛宴
火腿肠新国标实施,教你辨别达标产品
14脚中间继电器接线图详解
火腿肠里的亚硝酸盐真的会致癌吗?
双十一囤货指南:如何正确选购火腿肠?
董卿揭秘央视职场文化:如何成为顶级主持人?
从高原牧民到央视主持:斯塔罗布与黄思源的追梦之路
冬日雪地徒步 vs 滑雪:静与动的选择
冬日亲子科学实验:冰与雪的奇妙世界
冬天下雪时的户外教学活动设计:让孩子们在雪地里撒欢儿!
魏晋皇室的家族纷争与权力斗争
黑巧克力控压新宠!可可脂护心大揭秘
韭菜鸡蛋饺子的做法与技巧
韭菜肉饺子馅怎么调?包时不出汤吃时鲜香多汁,韭菜寓意“久财”
胶州:“夜经济”开启新“夜”态
青岛八大美食:从脂渣到鲍鱼,每一道都是舌尖上的盛宴
青岛美食街排行榜前十名
上海奶茶健康分级:红绿灯亮起,你真的看懂了吗?
奶茶虽好喝,当心“爆血管”!
奶茶里的反式脂肪酸,你真的了解吗?
大姜教你高效化解职场矛盾
职场冲突管理:维护你的心理健康
老北京年夜饭的民俗文化
厦门四天四夜深度游:从鼓浪屿到环岛路,玩转这座美丽的海滨城市
厦门环岛路+茶咖之旅,打卡最美海岸线!
2024仙女湖七夕文化旅游节:一场穿越千年的浪漫邂逅
“超级光盘”技术:突破存储极限的中国创新
突破光学极限!顾敏院士团队研发“超级光盘”实现Pb级存储
超级光盘技术突破:一张光盘可存储1600TB数据,中国团队引领光存储技术新革命
平江辣条:从“洪水中的偶然”到百亿产业