【问题标题】:Hardcoding packages versions on docker image在 docker 镜像上硬编码包版本
【发布时间】:2021-04-15 12:43:58
【问题描述】:

是否有一种已知的方法来跟踪 docker 映像上已安装软件包的版本?我安装了一些示例包

FROM docker.io/debian:bullseye
RUN   apt-get update && \
      apt-get install -y --no-install-recommends ca-certificates tar ... && \
      apt-get upgrade -y libc6

现在我无法控制使用哪些包版本。从同一个 dockerfile 构建两次可能会产生不同的结果。事情可能会突然开始崩溃,我不知道库的最后一个工作版本是什么。

我无法对版本进行硬编码,例如

apt-get upgrade -y libc6=2.31-6

因为 Bullseye 中可用的版本在不断变化。并且在接下来的几天内,2.31-6 将无法使用。

使用通配符也没有意义。

【问题讨论】:

    标签: linux docker version


    【解决方案1】:

    简单的方法是切换到debian:buster,它是当前最新的 Debian 稳定版本。稳定版本的软件包很少更改(bullseye 不稳定)。

    困难的方法是从其他专用存储库获取包\源,然后从源安装或构建它们。例如https://deb.sury.org/ 有任何版本的 PHP。如果添加到apt,则可以选择要安装的PHP。

    【讨论】:

    • 但是debian:buster 有很多漏洞,即使是高严重性:CVE-2018-12886、CVE-2020-8285、CVE-2020-8286、CVE-2019-19449、CVE-2020-36158 、CVE-2019-19814、CVE-2020-29569、CVE-2020-11725、CVE-2020-29661、CVE-2020-2937 以及更多中低级问题。额外的存储库对我来说是一个不错的选择。我希望我能找到我需要的所有软件包的更改存储库。谢谢。
    • @LancerX 你应该看看 Ubuntu。它基于 Debian,但它有频繁的更新和安全补丁。这比使用不稳定的版本要好。
    猜你喜欢
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 2018-03-22
    • 2016-10-29
    • 2021-05-27
    相关资源
    最近更新 更多