Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Docker图像链接包含多个版本和标签?_Docker_Dockerfile_Docker Image - Fatal编程技术网

为什么Docker图像链接包含多个版本和标签?

为什么Docker图像链接包含多个版本和标签?,docker,dockerfile,docker-image,Docker,Dockerfile,Docker Image,希望这不是一个愚蠢的问题。当查看Docker图像时,尤其是从官方存储库中,它们列出了每个Docker文件的多个版本和标签。例如: 9.1.6-php8.0-apache-buster, 9.1-php8.0-apache-buster, 9-php8.0-apache-buster, php8.0-apache- buster, 9.1.6-php8.0-apache, 9.1-php8.0-apache, 9-php8.0-apache, php8.0-apache, 9.1.6-apache

希望这不是一个愚蠢的问题。当查看Docker图像时,尤其是从官方存储库中,它们列出了每个Docker文件的多个版本和标签。例如:

9.1.6-php8.0-apache-buster, 9.1-php8.0-apache-buster, 9-php8.0-apache-buster, php8.0-apache-
buster, 9.1.6-php8.0-apache, 9.1-php8.0-apache, 9-php8.0-apache, php8.0-apache, 9.1.6-apache-
buster, 9.1-apache-buster, 9-apache-buster, apache-buster, 9.1.6-apache, 9.1-apache, 
9-apache, apache, 9.1.6, 9.1, 9, latest, 9.1.6-php8.0, 9.1-php8.0, 9-php8.0, php8.0

我的问题是,为什么他们会在链接中列出这么多版本的变体(即9.1.6-php8.0-apache-buster和9.1-php8.0-apache-buster等)?我不确定这是否是为了搜索和爬行(尽管它不需要像它们那样包含在链接中),或者是因为每个dockerfile都可以修改为这些版本中的任何一个?(如果是,怎么做?)。例如,上面的drupal dockerfile支持9-9.1.6,dockerfile可以调整为该版本。TBH,这主要是混淆了为什么他们会这样做,如果只是为了搜索索引,因为它看起来支持某个东西的多个版本。

今天,这些标签可能都指向同一个图像。但是明天,9.1.7可能会发布,届时,所有9.1.6图像将保持不变,新的9.1.7图像集将使用通用标记(如9.1和9)构建。此外,当9.2.0发布时,或PHP8.1发布时,或debian的下一个版本发布时,这些都可能是应用程序的突破性更改。因此,在Dockerfile中,您可能会说:

FROM ${BASE}:9.1-php8.0-apache-buster
通过这样做,您将在9.1.7发布时获得它,而不是9.2.0,并且您不会意外地被转移到nginx,或者在它稳定后从buster升级到Bullsey。你的应用程序能够容忍的更改越多,你的基本图像标签就越通用。这些更改之一的风险可能会破坏您的应用程序


您可以非常具体,并将其固定到不会自动更新的确切基本映像,但随着安全漏洞在较新的基本映像中修补,您的子映像将仍然容易受到攻击,因为它锁定到不会接收更新的旧基本映像。

因此链接中的这些标记可以在FROM语句中使用,并充当通配符:即9.1==9.1.X?这意味着它可以安装从9.0到@user58446的任何东西。如果我知道你在看哪种回购协议,这将是一个更容易给出细节的方法。我没有特别想找到一种,只是想了解为什么会这样做。当我真的去寻找一个,我总是想知道为什么他们不说
9.16-php8.0-apache-buster
,而不是添加所有额外的?为什么需要
9.1-php8.0-apache-buster
或者只需要
9.1
?它是做什么的,我将如何使用它?@user58446你在问一个关于某个回购协议上特定9.0.11标签的问题。你是说标签指向与9.1.x标签相同的图像吗?我看不到你的屏幕给你一个更好的答案。9.0.11标签是从哪里来的?你是说9.1.6?你是说不管回购协议如何,这里都没有一个模式?看看或者。。。对于gcc,它说的是
10.3.0、10.3、10、最新的
,“最新”的图像是10.3还是10.0?很明显我猜是10.3,但谜团是为什么要在链接中添加10.0。