DockerFile优化镜像体积

原文

DockerFile优化镜像体积

前文回顾:

与昨天,也就是上一篇文章的镜像大小做一个对比

可以看到,镜像大小为729MB,很庞大,明明是一个新构建的Springboot项目,怎么会这么大呢?

image-20250215154808088

排查发现,这是由于基础镜像的体积太大了,所以导致构建的时候体积也非常大。

一、细数优化镜像体积的思路与方式

1、尽可能选择轻量级基础镜像
2、优化镜像层缓存 (经常变动的命令放在后面构建,命令从上往下执行,这样前面的命令就会经过缓存)
3、尽可能减少层数
4/分阶段构建
5、尽量将Dockerfile相关文件放在同一目录

好的,那么我们的问题就是由于第一个点引起,基础镜像太大

二、优化Dockfile文件

创建一个 Dockerfile2

touch Dockerfile2

image-20250215155554182

vi Dockerfile2

编辑 Dockerfile2文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 使用OpenJDK 8的JRE镜像作为基础镜像
FROM openjdk:8-jre-alpine

# 设置工作目录
WORKDIR /home/root123

# 将宿主机上已经打包好的jar包复制到容器的/app目录下
# 假设你的jar包名称为my-app.jar,你需要根据实际情况修改这里的文件名
COPY ./demo-0.0.1-SNAPSHOT.jar /home/root123

# 声明容器在运行时将监听的端口,这里假设你的应用运行在8080端口
EXPOSE 8080

# 设置容器启动时执行的命令,使用java -jar命令来运行jar包
ENTRYPOINT ["java", "-jar", "/home/root123/demo-0.0.1-SNAPSHOT.jar"]

通过Dockerfile2 这个文件再构建一次Springboot应用,输入命令,执行成功。

温馨提示:本篇文章需要结合上篇文章DockerFile构建SpringBoot镜像看效果更好

三、构建镜像

docker build -t mydemo:v1 -f Dockerfile2 .

image-20250215164914104

镜像构建成功!

通过 docker images 查看镜像大小,可以看到只有103MB,比原来小了500多MB,优化了将近7.08倍。

换句话说,文件大小减少了大约86%

image-20250215165237555

好的,现在执行该镜像,看看效果是不是正常呢?

四、运行镜像

docker run -d -p 8091:8080 --name=mydemo 7f46db56915e

通过 docker ps 可以看到,镜像正常执行。

image-20250215165553029

我们再去通过浏览器去访问一下应用是否能正常返回?

五、查看运行效果

没问题!应用正常返回成功。

image-20250215165724327

由此可见,通过Dockerfile的优化技巧,将镜像体积给缩小了,更多Dockerfile技巧也可以互相交流。

OK,希望这篇文章可以对你起到帮助。


DockerFile优化镜像体积
http://example.com/2025/02/15/DockerFile优化镜像体积/
作者
zpqwe
发布于
2025年2月15日
许可协议