当谈到技术和资源管理时,确实并非所有事物越大越好,这点尤其在 Docker 镜像的管理上体现得淋漓尽致。随着镜像大小的增加,云存储和运维成本也随之增加。因此,有效地减小 Docker 镜像的尺寸对于降低成本和提高效率至关重要。
举例来说,以hcymysql/mysql_slowquery:2024-07-04镜像为例,原始文件大小达到3.53GB。在这种情况下,使用 Docker-slim 工具可以显著地优化镜像,减少其占用的存储空间和资源。这种优化不仅可以节省云端存储成本,还能加速镜像的部署和传输过程,提升整体的效率和性能。
通过这种方式,不仅可以有效地管理资源消耗,还能够提高整体系统的可维护性和可扩展性,是现代云计算环境中不可或缺的一环。
瘦身操作
登录后复制
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 \--expose80\--expose3306\
--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-slim 是一款强大的工具,它能够在不改变 Docker 容器映像内容的情况下,将其缩小多达 30 倍。它利用先进的分析技术来理解应用程序,从而精准地优化容器。这种优化过程包括丢弃不必要的组件和资源,从而减少容器的资源占用。通过这种精准的优化,Docker-slim 不仅能有效节省存储空间和云端成本,还能提升容器的整体性能和安全性。
版权归原作者 egzosn 所有, 如有侵权,请联系我们删除。