gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:20:06 26 4
gpt4 key购买 nike

当我使用标记在本地构建 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/

    26 4 0