如何查找 Docker 镜像的哈希值?

问题描述 投票:0回答:2

当我使用这个 docker 命令时:

docker inspect 'name of my container' | grep sha256

我得到了这个:

"Image": "sha256:345hu5j3h53jk234",

如何使用 --cut -d 命令 只获取不带引号的 sha256:345hu5j3h53jk234

目前我正在尝试类似的事情:

docker inspect 'name of my container' | grep sha256 | cut -d ","-f2

但是不起作用。

docker cut
2个回答
4
投票
与许多其他列表类型 Docker 命令一样,

docker inspect
采用
--format
选项,可让您使用 Go
text/template
语言重新格式化结果。如果您只是想挑选简单的字段,这最有效:

docker inspect container-name -f '{{ .Image }}'

标准 shell 工具比 JSON 等结构化文件更面向行文本文件。有评论建议使用

jq
,这将是一个很好的工具。如果这确实不是一个选择,您可以使用 sed(1):

执行此操作
docker inspect container-name | sed -ne 's/.*"Image": "\([^"]*\)",$/\1/p'

进一步分解

sed
命令:

  • sed -n
    导致默认情况下不打印行。
  • s/RE/\1/p
    尝试将当前行与正则表达式进行匹配;如果是,则将该行替换为第一个
    \(...\)
    组,然后打印它。
  • .*"Image":
    通过 JSON
    "Image":
    标记匹配任意文本。
  • \(...\)
    捕获一组用于
    \1
    替换。
  • [^"]*
    匹配任意数量的非双引号字符。
  • ",$
    匹配双引号、逗号和行尾。

除非您点头同意这个解释,否则我更喜欢

docker inspect -f
jq
方法。


0
投票

基于 David 的 answer(已投票)构建的,但经过测试可与最新的 Docker (v24.0.5) 一起使用:

$ docker inspect mirekphd/ml-cpu-py311-jup-cust:latest -f '{{ .ContainerConfig.Image }}'
© www.soinside.com 2019 - 2024. All rights reserved.