Docker-slim 是一个用于 Docker 镜像瘦身的工具,通过静态和动态分析将大镜像转变为缩略镜像,同时确保镜像仍然可以正常运行。
主要优势
- 静态分析:获取镜像的历史信息,追踪生成镜像的 Dockerfile 文件,以及设置的 port、cmd、entrypoint 等数据。
- 动态分析:通过内核工具(如 ptrace、pevent、fanotify)解析出镜像中必要的文件和文件依赖,并将对应文件组织成新镜像。
- 便捷使用:使用简单的命令即可优化 Docker 镜像,减少镜像体积,提升部署效率。
如需了解更多信息,可以访问其官方网站或查阅相关的技术文档。
搭建教程
本文通过 Docker 的方式来部署 Docker-slim,以 Ubuntu 为例,操作步骤如下:
第一步:安装 Docker
sudo apt update
sudo apt install -y docker.io
第二步:拉取 Docker-slim 镜像
sudo docker pull dslim/slim
Using default tag: latest
latest: Pulling from dslim/slim
29bdde8bd6f2: Pull complete
cf5635ce3ebd: Pull complete
ce3e9aaa10d6: Pull complete
Digest: sha256:27859c6a566658d7a27748818f3d23b592fa52a134c53bc0358e77fb14168936
Status: Downloaded newer image for dslim/slim:latest
第三步:拉取其他镜像
sudo docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
b0a0cf830b12: Pull complete
8ddb1e6cdf34: Pull complete
5252b206aac2: Pull complete
988b92d96970: Pull complete
7102627a7a6e: Pull complete
93295add984d: Pull complete
ebde0aa1d1aa: Pull complete
Digest: sha256:ed6d2c43c8fbcd3eaa44c9dab6d94cb346234476230dc1681227aa72d07181ee
Status: Downloaded newer image for nginx:latest
查看镜像大小:
sudo docker images | grep nginx
nginx latest 7383c266ef25 12 days ago 188MB
第四步:通过 Docker-slim 构建新镜像
sudo docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock dslim/slim build nginx
再次查看镜像大小:
sudo docker images | grep nginx
nginx.slim latest e079f3e78783 4 seconds ago 13.3MB
nginx latest 7383c266ef25 12 days ago 188MB
第五步:启动容器运行新镜像
sudo docker run --name myNginx -p 8000:80 -d nginx.slim
指令执行完成后,容器指定 8000 端口访问的,因此还需要在服务器的防火墙上打开相应的端口。在浏览器访问 IP:8000
即可。