使用apt-get build depm最小化Docker镜像

有时候在构buildDocker镜像时,有必要使用apt-get 。 例如,用于运行Magento的图像可能会像这样启动

 FROM php:5.4-apache RUN apt-get -qqy update \ && apt-get -qqy install git \ libmcrypt-dev \ libpng12-dev \ libxml2-dev \ libxslt-dev \ && docker-php-ext-install bcmath \ gd \ mcrypt \ mysql \ soap \ xsl \ zip 

但是现在我拥有那些apt-get命令带来的所有垃圾。 更糟的是,我甚至不知道我能够删除什么,因为大概是PHP库是dynamic链接的。

我正在考虑沿线等

  1. 有没有办法在docker-php-ext-install静态链接php库文件,这样我就可以将所有的apt-get删除了?
  2. 如何删除apt-get update留下的数据?

但这些只是XY的问题 。 我真正的问题只是

我如何构build更小的Docker镜像,而不必将Dockerfile中的apt-get的易用性和可维护性放在一起?

你可以通过运行rm -rf /var/lib/apt/lists/*来删除一些东西

 RUN apt-get update \ && apt-get install -y MY_PACKAGE \ && rm -rf /var/lib/apt/lists/* 

请记住,您需要在apt-get update的同一行中运行它才能生效。