前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用docker-slim为你的docker镜像瘦身

使用docker-slim为你的docker镜像瘦身

原创
作者头像
贺春旸的技术博客
发布2024-07-09 16:23:43
1710
发布2024-07-09 16:23:43
举报
文章被收录于专栏:DBA 平台和工具

当谈到技术和资源管理时,确实并非所有事物越大越好,这点尤其在 Docker 镜像的管理上体现得淋漓尽致。随着镜像大小的增加,云存储和运维成本也随之增加。因此,有效地减小 Docker 镜像的尺寸对于降低成本和提高效率至关重要。

举例来说,以hcymysql/mysql_slowquery:2024-07-04镜像为例,原始文件大小达到3.53GB。在这种情况下,使用 Docker-slim 工具可以显著地优化镜像,减少其占用的存储空间和资源。这种优化不仅可以节省云端存储成本,还能加速镜像的部署和传输过程,提升整体的效率和性能。

通过这种方式,不仅可以有效地管理资源消耗,还能够提高整体系统的可维护性和可扩展性,是现代云计算环境中不可或缺的一环。

docker原始镜像
docker原始镜像

瘦身操作

代码语言:bash
复制
shell> wget https://github.com/slimtoolkit/slim/releases/download/1.40.11/dist_linux.tar.gz
shell> tar zxvf dist_linux.tar.gz
shell> cd dist_linux

shell> ./docker-slim build \
--http-probe=false \
--expose 80 \
--expose 3306 \
--include-path=/var/www/html \
--include-path=/var/log/httpd \
--include-path=/run/httpd \
--include-path=/tmp \
--include-path=/data \
--include-path=/etc \
--include-path=/usr/ \
--include-path=/sbin/ \
--include-path=/root/ \
--include-path=/bin/ \
--include-bin=/usr/sbin/httpd \
--include-bin=/usr/libexec/mysqld \
--include-bin=/usr/bin/php \
--include-bin=/usr/bin/systemctl \
--include-bin=/bin/bash \
--cmd "/usr/sbin/init" \
<IMAGE ID>

参数解读

1 ./docker-slim build

这是运行 docker-slim 以构建一个新的优化后的 Docker 镜像的主要命令。

2. --http-probe=false

禁用 HTTP 探测功能。HTTP 探测用于自动检测并包含容器公开的 HTTP 端点所需的任何依赖项。

将其设置为 false 禁用此行为。

3. --expose 80--expose 3306

显式公开端口 80(通常用于 HTTP)和 3306(通常用于 MySQL)。这是为了使这些端口可供外部访问。

4. --include-path=<path>: 指定文件系统中要包含在优化镜像中的路径。列出的路径有:

  • /var/www/html:通常是 Web 服务器的根目录。
  • /var/log/httpd:包含 HTTP 服务器日志的目录。
  • /run/httpd:HTTP 服务器在运行时使用的目录。
  • /tmp:临时文件存储。
  • /data:通用数据目录。
  • /etc:配置文件。
  • /usr/:用户二进制文件和程序。
  • /sbin/:系统二进制文件。
  • /root/:root 用户的主目录。
  • /bin/:基本命令二进制文件。

5. --include-bin=<binary>: 指定要包含在优化镜像中的单个二进制文件。列出的二进制文件有:

  • /usr/sbin/httpd:Apache HTTP 服务器。
  • /usr/libexec/mysqld:MySQL 服务器。
  • /usr/bin/php:PHP 解释器。
  • /usr/bin/systemctl:Systemd 服务管理器。
  • /bin/bash:Bash shell。

6. --cmd "/usr/sbin/init": 指定容器启动时要执行的命令。在本例中,是 init 进程,它是内核启动的第一个进程,并且是所有其他进程的祖先。

7. 7b0278943ae0: 这是要优化的 Docker 镜像的 ID。docker-slim 将使用这个镜像作为基础来创建一个更小、更优化的版本。

瘦身后docker镜像
瘦身后docker镜像

总结

Docker-slim 是一款强大的工具,它能够在不改变 Docker 容器映像内容的情况下,将其缩小多达 30 倍。它利用先进的分析技术来理解应用程序,从而精准地优化容器。这种优化过程包括丢弃不必要的组件和资源,从而减少容器的攻击面和资源占用。通过这种精准的优化,Docker-slim 不仅能有效节省存储空间和云端成本,还能提升容器的整体性能和安全性。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 瘦身操作
  • 参数解读
  • 总结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档