【问题标题】:如何在 Docker 文件中获取最新的 nodejs:14 摘要版本
【发布时间】:2022-01-23 11:48:33
【问题描述】:

是否有任何命令/方法可以获取 amazon/aws-lambda-nodejs:14 的最新摘要(sha256)。目前,我们正在手动设置摘要版本 sha256。喜欢,在下面给出。

FROM amazon/aws-lambda-nodejs:14@sha256:621368a9c8cbf474b60ae9092725f6ea7ae4f9b0ac7a9229039e25157bad990b

一段时间后,我们最终会发现 Docker 映像存在漏洞。请在 Dockerfile 中提出一种方法/命令,以在构建 Docker 映像时获取最新版本或稳定版本。

【问题讨论】:

  • FROM amazon/aws-lambda-nodejs:latest 用于最新版本,FROM amazon/aws-lambda-nodejs:14 用于最新 14.* 版本。如果您缓存了一些较旧的 14.* 图像,它将被使用。你会得到最新的。
  • 希望你不要介意我的愚蠢问题@stefan。版本 14 和最新版本不同吗?你能解释一下区别吗?
  • Latest 代表最新版本。如果明天他们发布版本 15 或 16,那将是最新版本。版本 14 只是版本 14。但即使是版本 14 也有补丁和更新。如果您查看available tags 的图像,您会看到有14.2021.12.21.2314.2021.12.21.1614.2021.12.18.00 等版本。当您指定版本14 时,您将获得版本以@ 开头的最新图像987654328@。在这种情况下,它将是14.2021.12.21.23

标签: node.js amazon-web-services docker hash


【解决方案1】:

如果您像这样指定精确的图像哈希,您将始终获得该精确的图像,而不是较新的版本或构建。

更常见的是只指定图片标签

FROM amazon/aws-lambda-nodejs:14

如果您docker pull 基础镜像,它将联系注册表并尝试获取更新的版本。它不会下载它已经拥有的版本或层,因此如果上游没有更改映像,这可能会很快(或者如果基本操作系统有更新并且您需要重新下载整个东西,它可能会很慢)。

docker pull amazon/aws-lambda-nodejs:14
docker build .

docker builddocker-compose build 都有 --pull 选项可以自动执行此操作。例如,如果您使用 Compose,则可以

docker-compose pull
docker-compose build --pull
docker-compose up -d

获取docker-compose.yml 文件或 Dockerfile FROM 行中提到的任何映像的最新版本。

【讨论】:

    【解决方案2】:

    每个标签的摘要列表可从 V2 注册表 JSON 响应中获得,用于 images 数组中的特定标签:

    curl -sfL "https://registry.hub.docker.com/v2/repositories/amazon/aws-lambda-nodejs/tags/14" \
     | jq -r '.images[] | "\(.os) \(.architecture) \(.digest)"'
    

    同样来自 RepoDigests 数组中的本地图像

    docker pull amazon/aws-lambda-nodejs:14
    docker inspect amazon/aws-lambda-nodejs:14 | \
     jq -r '.[].RepoDigests'
    

    【讨论】:

      猜你喜欢
      • 2017-09-07
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      相关资源
      最近更新 更多