You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Swarm容器镜像未在docker image ls显示及获取digest方法

Docker Swarm镜像标签不显示问题及镜像Digest查看方法

一、镜像标签未在docker image ls中显示的原因

  • 标签被移除或覆盖:容器启动后,可能通过docker image tag修改了镜像标签,或者拉取了同一镜像的其他版本标签,导致原0.4.3-survival标签被移除。但容器启动时会记录当时的镜像标签信息,所以docker container ls仍会显示该标签,而docker image ls只显示当前存在的标签。
  • Swarm镜像分发机制:Docker Swarm部署时,镜像可能从集群内其他节点分发而来,本地节点以内容寻址(Digest)的方式存储镜像,并未保留原标签。docker container ls显示的标签是来自docker-compose.yml的配置记录,而非本地镜像的实际标签。
  • 镜像标签被清理:如果执行过docker image prune或类似清理命令,未被引用的镜像标签会被删除,但正在运行的容器对应的镜像层不会被清理,因此容器能正常运行,docker container ls显示原标签,但docker image ls中找不到该标签。

二、查看容器所用镜像的Digest字段的方法

  • 使用docker inspect命令直接查看:
    针对单个容器,执行以下命令(替换<容器ID或名称>为实际值):
    docker inspect --format='{{.Image}}' <容器ID或名称>
    
    该命令会返回镜像的完整Digest(格式为sha256:xxxxxx...)。如果要同时显示镜像标签和Digest,可以用:
    docker inspect --format='镜像标签: {{.Config.Image}} | 镜像Digest: {{.Image}}' <容器ID或名称>
    
  • 通过镜像ID查看Digest:
    先从docker container ls中获取容器使用的镜像ID,再执行:
    docker image inspect --format='{{.RepoDigests}}' <镜像ID>
    
    输出结果中会包含该镜像的Digest信息。
  • 使用docker container ls的详细格式输出:
    执行以下命令可以批量查看容器的镜像标签和对应的镜像Digest:
    docker container ls --no-trunc --format='{{.Names}} | 镜像标签: {{.Image}} | 镜像Digest: {{.ImageID}}'
    

内容的提问来源于stack exchange,提问作者Genarito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:03:09