Asp.net 6 Docker操作系统

6l7fqoea  于 2023-01-20  发布在  Docker
关注(0)|答案(1)|浏览(177)

我们有一个ASP.NET核心Docker映像,它是通过Dockerfile中的默认FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base构建的。
我们有一个每周构建版本。我们的漏洞扫描会在低级别Debian库的每个构建版本中引发不同的问题。例如Week 1:一个关于libraryA v1的问题。它建议我们将libraryA更新为v2。但是接下来的一周,当我们构建一个新的Docker映像时,ASPNET自动附带了libraryAv2。我们甚至不必对libraryA做任何事情。但是随后,报告了新的漏洞,这些漏洞将在接下来的几周内自动修复。
有没有办法告诉ASP使用特定的操作系统版本?
从ASPNET停靠中心,
https://hub.docker.com/_/microsoft-dotnet-aspnet/
以下是Debian 11的标签:

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月的版本是使用6.0.11,通过检查镜像的docker历史记录。它报告了一些关于krb 5/libgssapi-krb 5 -2的问题,建议它升级到版本1.18.3-6+deb 11 u3。我们去年11月的docker镜像只有在我使用docker-exec时才使用deb 11 u2
今天(1月),如果我尝试使用下面的FROM强制使用特定的ASPNET版本,则库会自动更新为deb 11 u3

• 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新手在这里)

kmbjn2e3

kmbjn2e31#

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中添加一个注解,说明摘要引用的标记,因为这不再是显而易见的。
让我补充一下,这可能不是一个好主意。你拒绝了自己的安全更新,可以修复重要的漏洞。这可能是值得看看如何才能有一个平稳的工作流程,并同时获得这些更新。

相关问题