1.介绍一下吧
docker-slim 是一个强大的工具,用于自动分析和优化 Docker 镜像。
官方代码地址:
https://github.com/slimtoolkit/slim?tab=readme-ov-file#installation
2.用一下吧
安装【我这里直接演示用docker装】:
其它安装方式
https://github.com/slimtoolkit/slim?tab=readme-ov-file#installation
docker pull dslim/slim
拉下来了。
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
dslim/slim latest 6205a57fba8b 5 months ago 56.3MB
biliupapp latest 21b927cf22c3 10 days ago 912MB
开始优化,目标优化镜像biliupapp:docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock dslim/slim build biliupapp:latest
解释一下命令:
-it
使容器具有交互性--rm
在命令执行完后删除容器-v /var/run/docker.sock:/var/run/docker.sock
允许 Docker-slim 容器与主机的 Docker 守护进程通信dslim/slim
是我们刚刚拉取的 Docker-slim 镜像build biliupapp:latest
是告诉 Docker-slim 优化 biliupapp:latest 镜像
当然还可以加更多参数。可以参考官方项目,我这里总结了一些常用的。
--http-probe
启用 HTTP 探测。Docker-slim 会尝试发送 HTTP 请求来发现应用的行为。
例如:--http-probe=true
--expose
指定需要暴露的端口。
例如:--expose 8080,9000
--include-path
保留指定的文件或目录。
例如:--include-path /app/config --include-path /app/data
--exclude-pattern
排除匹配特定模式的文件。
例如:--exclude-pattern *.tmp
--env
设置环境变量。
例如:--env MYVAR=value
--mount
指定需要挂载的卷。
例如:--mount /host/path:/container/path
--exec
在容器中执行指定的命令。
例如:--exec "node server.js"
--tag
为优化后的镜像指定自定义标签。
例如:--tag myapp:optimized
--preserve-path
保留指定的路径,即使它们看起来没有被使用。
例如:--preserve-path /app/licenses
--continue-after
在执行指定命令后继续优化过程。
例如:--continue-after 30
--show-clogs
显示容器日志。
使用:--show-clogs=true
--use-seccomp
使用 seccomp 配置文件。
使用:--use-seccomp=true
docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock dslim/slim build [参数] 镜像名:标签
优化过程:
等它优化完以后,我们再次查看镜像大小:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
dslim/slim latest 6205a57fba8b 5 months ago 56.3MB
biliupapp.slim latest aa9a5cd54b41 26 minutes ago 112MB
biliupapp latest 21b927cf22c3 10 days ago 912MB
牛批。
评论区