21

我正在尝试制作绝对最小的 Docker 映像,因此我已经从 ubuntu 作为我的基础切换到了 alpine。

对于apt,我曾经使用--no-install-recommends最小化与我想要的软件包一起安装的“依赖项”。是否有我需要传递的等效标志,apk或者这是这个精简操作系统的默认行为?

4

1 回答 1

25

不,我认为它没有相同的标志,因为它甚至没有下载推荐包的相同行为。

但是,还有另一个标志--virtual可以帮助您缩小图像:

apk add --virtual somename package1 package2

接着

apk del somename 

这对于仅用于构建但不适用于以后执行的东西很有用。

请注意,您必须在一个 RUN 命令中执行它,否则它无法从之前的 Docker 镜像层中删除。

例如,如果pything1需要package1package2运行,但只需要package3package4在安装构建期间,这将是最佳的:

RUN apk add --no-cache package1 package2
RUN apk add --no-cache --virtual builddeps package3 package4 && \
    pip install pything1 && \
    apk del builddeps 

包 3 和 4 没有添加到“世界”包中,而是在写入层之前被删除。

这个问题反过来问了一个问题:apk add --virtual 命令的 .build-deps 是什么?

于 2018-04-08T05:59:24.203 回答