您的位置:首页 > 游戏 > 手游 > 长春火车站人工电话_大连app开发多少钱_重庆seo服务_男生短期培训就业

长春火车站人工电话_大连app开发多少钱_重庆seo服务_男生短期培训就业

2025/7/4 4:55:01 来源:https://blog.csdn.net/qq_37160346/article/details/143434515  浏览:    关键词:长春火车站人工电话_大连app开发多少钱_重庆seo服务_男生短期培训就业
长春火车站人工电话_大连app开发多少钱_重庆seo服务_男生短期培训就业

​ 由于最近在发布的时候发现docker镜像体积变得越来越大,导致整个打包发布流程变得非常耗时了。所以又接到一个差事,优化最终镜像体积。顺便也记录一下docker镜像体积优化的一些步骤。

大概步骤可以分为以下几个步骤:

  • 重做基础镜像,因为原基础镜像提交就已经占用了500M,所以计划使用alpine重新制作。
  • 优化Dockerfile文件,合并一些指令来减小镜像层数,删除一些临时文件等。
  • 最后是对基于重制的基础镜像打包发布镜像后进行镜像层数压缩(docker-squash)。
一、重做基础镜像

文件目录如下:

1730446104208-2024-11-115:28:25.png

Dockerfile-alpine-openjdk

我这基础镜像需要安装 jdk8、 python2、系统级cron组件(supercronic)

FROM  docker.m.daocloud.io/alpine:3.14LABEL maintainer="傲寒 <wanngziyi@gmail.com>"# 设置工作目录
WORKDIR /opt/aohanCOPY ./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 命令镜像制作

# 不使用缓存
docker build --no-cache -f ./Dockerfile-alpine-openjdk -t openjdk8-python2:v1.0.0 .

效果还不错只有200M 比之前的小了快300M

image-20241101154056188-2024-11-115:41:42.png

二、Dockerfile优化

我们自己的不方便展示主要就是

  • 使用上边新的基础镜像。

  • 优化指令减少层数。

  • 删除临时文件。

三、压缩镜像
1、docker-squash是什么?
  1. 定义
    • docker-squash是一个用于压缩 Docker 镜像的工具。Docker 镜像是由一系列的层(layers)组成的,在构建和使用过程中,这些层会逐渐累积。docker-squash可以将这些多层的 Docker 镜像压缩成一个单一层的镜像,从而减小镜像的大小。
  2. 工作原理
    • 当构建 Docker 镜像时,每一个指令(如RUNCOPY等)都会在基础镜像之上创建一个新的层。随着时间的推移和构建步骤的增加,镜像会包含许多层。docker-squash通过将这些层合并,消除了层与层之间的冗余部分。例如,如果一个镜像有多个层,其中有些层可能包含相同的文件或者依赖,docker-squash会把这些重复的部分整合,生成一个更紧凑的镜像。
2、安装使用
pip install docker-squash

然后直接使用,其他参数可以查阅一下文档。

docker-squash -t 新镜像名称 原镜像名称

以下是压缩结果 压缩了36.9% 一下减少600M 效果还是非常不错的。

1730447743812-2024-11-115:55:44.png

效果不错这下又可以交差,又能开开心心划水。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com