首页 > 解决方案 > docker 层是否允许意外的容器操作系统升级?

问题描述

当我转向容器时,我意识到容器概念将操作系统和应用程序绑定到同一个部署系统中。

背景

docker pull mcr.microsoft.com/dotnet/core/runtime:3.1.1-buster-slim

此命令提取 Microsoft 为 .NET Core 运行时设置的容器映像。该容器映像取决于mcr.microsoft.com/dotnet/core/runtime-deps:3.1-buster-slim容器映像。并且该 runtime-deps 容器映像是从该debian:buster-slim映像构建的。

debian:buster-slim映像当前面向 Linux Debian 10.2 版。但是当 10.3 发布时,它将以 10.3 为目标。(我假设它是当前版本时针对 10.1。)

问题

buster-slim标签debian更新到目标 10.3 时,是否所有下载都mcr.microsoft.com/dotnet/core/runtime:3.1.1-buster-slim更新为开始使用 10.3?

还是mcr.microsoft.com/dotnet/core/runtime:3.1.1-buster-slim以某种方式锁定在 10.2?

我很担心会发生这样的事情:

  1. 我制作了一个依赖于mcr.microsoft.com/dotnet/core/runtime:3.1.1-buster-slim并将其发布到生产环境的容器(运行 Debian 10.2)
  2. Debian 发布了 10.3 的操作系统并将buster-slim标签更新为指向 10.3。
  3. 我对容器做了一个非常小的更改(从步骤 1 开始),重建容器映像并部署它。但是由于 docker 的工作方式,我的小改动还包括无意中升级到 Debian 10.3 的操作系统。

我希望在使用 tag 时会出现这样的情况latest,但在使用特定标签时则不会。

所以可以用这个问题来概括:

即使我继续使用完全相同的标签,我是否会获得标签的依赖项升级?

标签: dockercontainersdockerhub

解决方案


是的,有可能。Docker 中没有任何内容可以阻止作者多次将新图像上传到同一个标签,即使对于您在此处讨论的特定标签也是如此。


推荐阅读