Asp.net核心6 Docker操作系统



我们通过Dockerfile中的默认FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base构建了一个ASP.NET Core Docker映像。

我们每周一次。我们的漏洞扫描在每个低级别Debian库的构建中都会引发不同的问题。例如Week1:关于libraryA v1的问题。建议我们将libraryA更新为v2。但接下来的一周,当我们构建一个新的Docker镜像时,ASPNET会自动附带libraryAv2。我们甚至不需要对libraryA做些什么。但随后,报告了新的漏洞,这些漏洞将在未来几周内自动修复。

有没有办法告诉ASP使用特定的操作系统版本?

来自ASPNET dockerhub,

https://hub.docker.com/_/microsoft-dotnet-aspnet/

这些是Debian11:的标签

6.0.13-bullseye-slim-amd64, 6.0-bullseye-slim-amd64, 6.0.13-bullseye-slim, 6.0-bullseye-slim, 6.0.13, 6.0   

我们去年11月的构建是通过检查图像的docker历史来使用6.0.11。它报告了一些关于krb5/libgsapi-krb5-2的问题,建议升级到1.18.3-6+deb11u3版本。去年11月,当我docker-exec进入我们的docker镜像时,它只使用deb11u2

今天(1月),如果我尝试以下FROM来强制使用特定的ASPNET版本,则库会自动更新为deb11u3

• FROM mcr.microsoft.com/dotnet/aspnet:6.0.11 AS base
• FROM mcr.microsoft.com/dotnet/aspnet:6.0.11-bullseye-slim-amd64 AS base

我正在考虑对特定的ASPNET或Debian版本进行基线化,我将使用这些库的apt-get手动处理漏洞报告。但从我上面的测试来看,即使我在Dockerfile的FROM中指定了特定版本,微软似乎也会自动更新底层操作系统。

有什么线索可以告诉ASPNET使用特定的操作系统版本吗?(抱歉Docker新手)

aspnet Dockerfiles不是基于其依赖项的固定版本,因此即使您使用6.0.13-bullseye-slim-amd64固定所需的aspnet版本,如果Microsoft重建并重新发布它,一些底层库可能已经更新。

要完全确定所需图像的版本,可以在FROM语句中使用摘要而不是标记。这样,你就不会得到任何更新,并且总是指向你想要的图像的确切版本。

你像这个一样使用它

FROM mcr.microsoft.com/dotnet/aspnet@sha256:5cf4aaa3fceb9bca683d56213873c0e418133a1ed36886a629bca266fb12e41b

您可以通过运行docker inspect image <image>来查找摘要。摘要位于"RepoDigests"字段中。执行docker pull时,还会打印摘要。

然后,您应该在Dockerfile中添加一条注释,说明摘要引用了什么标签,因为这已经不明显了。

让我补充一点,这样做可能不是一个好主意。你拒绝了可能修复重要漏洞的安全更新。也许有必要研究一下如何让工作流程流畅,同时获得这些更新。

最新更新