最小化基于 CentOS 的 Docker 映像


Minimize CentOS-based Docker image

我基于 CentOS 镜像构建了一个 PHP-FPM 镜像

FROM centos:7
RUN yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm && '
    yum -y install php-fpm php-mysqlnd php-mbstring php-intl php-amqp php-redis php-opcache --enablerepo remi,remi-php56 && '
    groupadd -g 1000 nginx && '
    useradd -u 1000 -g 1000 nginx
EXPOSE 9000
CMD ["php-fpm", "-F"]

并意识到最终图像非常大(超过 350MB)。请告诉我在哪里可以删除不需要的文件作为 Docker Hub 上的一些基于 Debian 的映像?

rm -rf /var/lib/apt/lists/*
rm -rf /var/lib/mysql

感谢您的帮助!

您可以使用

如下yum clean all清理 yam 缓存:

RUN yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm && '
    yum -y install php-fpm php-mysqlnd php-mbstring php-intl php-amqp php-redis php-opcache --enablerepo remi,remi-php56 && '
    groupadd -g 1000 nginx && '
    useradd -u 1000 -g 1000 nginx && '
    yum clean all

这样可以节省大约 70 MB。

如果这还不够,您可以考虑使用不同的基本映像,如 BusyBoxAlpine

Centos 已经有大约 170 MB

您可以在"remi-safe"存储库中尝试使用SCL软件包(php56-php*)(并使用/opt/remi/php56/root/usr/sbin/php-fpm命令)。

虽然 php-* 包同时提供 NTS 和 ZTS(

线程安全)构建,但 php56-php-* 包仅提供标准 NTS 构建(在您的情况下不需要 ZTS 构建),因此更小。

真的不知道你会节省多少。