最小化基于 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

感谢您的帮助!

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

php-* 软件包同时提供 NTS 和 ZTS(线程安全)构建,php56-php-* 软件包仅提供标准 NTS 构建(和 ZTS在你的情况下不需要构建)所以更小。

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

您可以像这样使用 yum clean all 清理 yums 缓存:

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