有时在构建Docker镜像时,必须使用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库是动态链接的。

我正在沿着诸如
  • 有没有一种方法可以静态链接 docker-php-ext-install 中的php库,以便我可以删除所有apt-get的内容?
  • 如何删除apt-get update剩余的数据?

  • 但是这些实际上只是X-Y questions。我的实际问题是

    如何在不完全失去在Dockerfile中使用apt-get的易用性和可维护性的情况下构建较小的Docker镜像?

    最佳答案

    您可以通过运行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的同一行中运行此命令,以使其生效。

    关于build - 使用apt-get构建部门最小化Docker镜像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28967591/

    10-16 02:09