我正在尝试制作绝对最小的 Docker 映像,因此我已经从 ubuntu 作为我的基础切换到了 alpine。
对于apt
,我曾经使用--no-install-recommends
最小化与我想要的软件包一起安装的“依赖项”。是否有我需要传递的等效标志,apk
或者这是这个精简操作系统的默认行为?
我正在尝试制作绝对最小的 Docker 映像,因此我已经从 ubuntu 作为我的基础切换到了 alpine。
对于apt
,我曾经使用--no-install-recommends
最小化与我想要的软件包一起安装的“依赖项”。是否有我需要传递的等效标志,apk
或者这是这个精简操作系统的默认行为?
不,我认为它没有相同的标志,因为它甚至没有下载推荐包的相同行为。
但是,还有另一个标志--virtual
可以帮助您缩小图像:
apk add --virtual somename package1 package2
接着
apk del somename
这对于仅用于构建但不适用于以后执行的东西很有用。
请注意,您必须在一个 RUN 命令中执行它,否则它无法从之前的 Docker 镜像层中删除。
例如,如果pything1
需要package1
并package2
运行,但只需要package3
并package4
在安装构建期间,这将是最佳的:
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 是什么?