docker - 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?
我很担心会发生这样的事情:
- 我制作了一个依赖于
mcr.microsoft.com/dotnet/core/runtime:3.1.1-buster-slim
并将其发布到生产环境的容器(运行 Debian 10.2) - Debian 发布了 10.3 的操作系统并将
buster-slim
标签更新为指向 10.3。 - 我对容器做了一个非常小的更改(从步骤 1 开始),重建容器映像并部署它。但是由于 docker 的工作方式,我的小改动还包括无意中升级到 Debian 10.3 的操作系统。
我希望在使用 tag 时会出现这样的情况latest
,但在使用特定标签时则不会。
所以可以用这个问题来概括:
即使我继续使用完全相同的标签,我是否会获得标签的依赖项升级?
解决方案
是的,有可能。Docker 中没有任何内容可以阻止作者多次将新图像上传到同一个标签,即使对于您在此处讨论的特定标签也是如此。
推荐阅读
- python - 使用带有 unigrams 和 bigrams 的 Tfidf 向量化的文本分类器模型
- amazon-dynamodb - GSI 排序键上的 DynamoDB 不等于
- java - 无法在 Android 中解析方法“getJSModule”
- django - 如何显示具有外键关系的记录的详细信息
- c - 使用不同类型的字段填充结构
- python - 如何摆脱 Choropleth 的白色背景?
- listview - 插入新记录后如何重新加载列表?
- java - Gettig CertificateException:Playframework java 应用程序中的“找不到与本地主机匹配的名称”
- undefined - 为什么fabricjs kclass fromobject在新版本上返回未定义?
- c# - 使用 linq 从 Json 获取 ID 的名称