docker - 如何在本地 Docker 镜像上看到额外的标签?

标签 docker

当我使用标记在本地构建 Docker 镜像,然后分配辅助标记时,我无法列出该镜像的所有标记。

我在构建、保存或加载 docker 图像时丢失了标签,并且我试图在每一步跟踪我的图像状态。请注意,这是一个本地 Docker 文件(就像在我的笔记本电脑上一样),不能发送到远程存储库。当我运行 docker images我可以看到使用其中一个标签创建的图像,但不是全部。

$ docker build -t my/repo:first_tag
$ docker tag my/repo:first_tag my/repo:second_tag

当我运行 docker images我只看到第一个标签显示为标签。

$ docker images
REPOSITORY     TAG          IMAGE ID     CREATED          SIZE
my/repo        first_tag    abcd1234     6 seconds ago    100MB

我想以某种方式显示带有所有标签的图像,例如:

my/repo:
  first_tag
  second_tag

是否存在这样的命令,如果存在,它是什么?

编辑:事实证明我添加了错误的标签,上面显示的代码并不代表它。我正在做的实际上是:

$ docker build -t my/repo:first_tag
$ docker tag my/repo:first_tag my/repo

请注意,第二个标签上没有实际标签。当我实际运行问题中的代码时,我得到以下输出:

$ docker images
REPOSITORY     TAG          IMAGE ID     CREATED          SIZE
my/repo        second_tag   abcd1234     6 seconds ago    100MB
my/repo        first_tag    abcd1234     6 seconds ago    100MB

最佳答案

如果要列出特定图像的标签,可以运行:

docker images my/repo --format="{{ .Tag }}"
--format 在这里仅用于保留有趣的列。默认情况下,docker images my/repo 将返回有关 my/repo 的所有信息(存储库、标签、图像 ID、创建和大小),就像 docker images(没有过滤存储库)一样。

编辑 :按标签对图像进行分组

由于 --format 选项占位符是有限的( https://docs.docker.com/engine/reference/commandline/images/#format-the-output ),因此您无法访问一些有趣的属性作为 .RepoTags 来检索与图像摘要关联的所有标签。但是,您可以通过 docker inspect 获取所需图像并使用一些 shell 和 jq 魔法来做到这一点(jq 是一种操作 JSON 的工具):
docker images my/repo --format="{{ .ID }}" | \
    sort | uniq | \
    xargs docker inspect | \
    jq -r '.[] | [ .Id, (.RepoTags | join(",")) ] | @csv'

说明:
  • 首先,检索所有与--format="{{ .ID }}"相关的图像ID(my/repo)
  • 删除重复项(sort | uniq)(如果有)(因为每个图像 ID 有多个标签)
  • 对于每个图像(xargs),检查该图像(docker inspect):
  • 使用 jq 检索类似 <id of the image>,<tags related to the image> 的字符串。与此图像相关的标签以逗号 (join(","))
  • 分隔

    示例结果:
    "sha256:abcd1234...","my/repo:v1"
    "sha256:abcd2345...","my/repo:v2"
    "sha256:abcd3456...","my/repo:v3,my/repo:tag"
    

    关于docker - 如何在本地 Docker 镜像上看到额外的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55369528/

    相关文章:

    linux - 如果操作系统环境发生变化,docker 如何工作?

    linux - 如何在 kubernetes 中部署 nginx.config 文件

    postgresql - 无法在 Docker 中更改 PostgreSQL 的管理员用户密码

    docker - 构建一个可以执行npm任务的Web应用

    node.js - 使用Nginx作为微服务API网关

    mysql - 如何预配置和预填充官方MySQL docker容器?

    python - Docker 无法构建,因为找不到需求的匹配分布

    java - Spring Cloud Dataflow Kubernetes 从 dockerfile 获取 jar 的属性

    Docker Compose : Volume declared as external, 但找不到

    docker - 无法访问 docker 容器中的 lite-server