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

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

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

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

瘦身操作

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.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.

参数解读

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-slim为你的docker镜像瘦身_HTTP_02

总结

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