logo NodeSeekbeta

Docker 本地 latest 镜像如何找到 dockerhub 对应版本

使用 docker 有时候为了方便拉下来的镜像是 latest 版本,但是迁移的时候,可能镜像更新了。这样的话,拉下来的镜像就和原来的不一致,如果启动报错了,就非常的麻烦。所以为了避免这种情况发生,最好使用指定版本。

万一真的出现了版本不一致不能启动的情况,首先就需要找到之前 latest 所对应的版本。这里以我这里的 linuxserver/freshrss 镜像为例:

docker inspect linuxserver/freshrss:latest

此时结果如下:

[
    {
        "Id": "sha256:7b384ece68d958ef0688ec7afb74bbc66cfbde2ffbb5a0bde59320eb040238b6",
        "RepoTags": [
            "linuxserver/freshrss:latest"
        ],
        "RepoDigests": [
            "linuxserver/freshrss@sha256:807e9bf3c9a887108375125a0b58a4251282ee40e331475e623b9504a6dbab1e"
        ]
    }
]

比较重要的是 RepoDigests 中的结果 807e9bf3c9a887108375125a0b58a4251282ee40e331475e623b9504a6dbab1e

然后可以通过浏览器访问如下地址:

# 不同的镜像,替换 linuxserver/freshrss 部分即可
https://registry.hub.docker.com/v2/repositories/linuxserver/freshrss/tags?page=1&page_size=1000

这样可以查询 linuxserver/freshrss 所有的 tag。(这里的分页数据设置大一点,方便查询到所有的标签)

此时将访问得到的结果使用浏览器插件 JSON-handle 或者其他 json 处理工具打开,再 ctrl + f 查询上面查到 hash 值。

需要注意的是,也有可能找不到对应的标签,这种情况可能是所有者将这个标签删除了。

20240417153854.png

这里索引是从 0 开始的,那么这条记录索引为 33,得到这个标签在 dockerhub 的位置就是 34。并且,dockerhub 基本都是 25 个镜像一页,那么直接找到第 2 页的第 9 个镜像即可。

20240417154232.png

如果 hash 值一致说明就找对了,如果不一样,可能是数错了。

  • 学习了

  • @ixinshang #1 xhj026

  • 大佬,昨天我搞到半夜。会穿透了

  • @洋芋 #3 那挺好的 xhj003

  • bd,感谢分享

  • 也可以迁移之前把镜像导出成压缩包,在另一台机器上docker import导入镜像。或者把当前镜像添加tag后上传到公共或私有镜像仓库,随时可以pull。

  • @yuniee #6 确实可以。不过这种是万一能用到的情况

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有15221位seeker

🎉欢迎新用户🎉