美文网首页
查找 docker 镜像的所有 tag

查找 docker 镜像的所有 tag

作者: 南国的小狼 | 来源:发表于2021-01-13 16:18 被阅读0次

    建议阅读方式

    可前往语雀阅读,体验更好:查找 docker 镜像的所有 tag

    环境说明

    centos7 阿里云主机一台:

    docker 相关信息如下:

    测试镜像 hello-world 的 tags 情况见官网:docker-hub#hello-world#tags

    curl 安装相关信息:

    查看方式

    方法一:利用 v1 版 api

    命令如下,其中 hello-world 为镜像名字:

    curl -L -s https://registry.hub.docker.com/v1/repositories/hello-world/tags | json_reformat | grep -i name | awk '{print $2}' | sed 's/\"//g' | sort -u
    

    封装成 list_image_tags_v1.sh

    #!/bin/bash
    
    repo_url=https://registry.hub.docker.com/v1/repositories
    image_name=$1
    
    curl -L -s ${repo_url}/${image_name}/tags | json_reformat | grep -i name | awk '{print $2}' | sed 's/\"//g' | sort -u
    

    注意:用到了 json_reformt 命令,系统中必须安装 yajl rpm 包

    方法二:利用 v2 版 api

    命令如下,其中 hello-world 为镜像名字:

    curl -L -s 'https://registry.hub.docker.com/v2/repositories/library/hello-world/tags?page_size=1024' | jq '.results[]["name"]' | sed 's/\"//g' | sort -u
    

    封装成 list_image_tags_v2.sh

    #!/bin/bash
    
    repo_url=https://registry.hub.docker.com/v2/repositories/library
    image_name=$1
    
    curl -L -s ${repo_url}/${image_name}/tags?page_size=1024 | jq '.results[]["name"]' | sed 's/\"//g' | sort -u
    

    注意:用到了 jq 命令,系统中必须安装 jq rpm 包

    对比两种方法得到的结果

    其他方法合集

    测试镜像: hello-world

    • wget v1

      # 写法一
      wget -q https://registry.hub.docker.com/v1/repositories/hello-world/tags -O -  | sed -e 's/[][]//g' -e 's/"//g' -e 's/ //g' | tr '}' '\n'  | awk -F: '{print $3}' | sort -u
      
      # 写法二
      wget -q https://registry.hub.docker.com/v1/repositories/hello-world/tags -O - | tr -d '[]{, ' | tr '}' '\n' | awk -F: '{print $3}' | sed 's/"//g' | sort -u
      
    • wget v1 jq(简洁)

      wget -q https://registry.hub.docker.com/v1/repositories/hello-world/tags -O - | jq -r '.[].name' | sort -u
      
    • skopeo(简洁,需安装 skopeo rpm 包,该包依赖项比较多)

      安装 skopeo rpm 包方法:

      yum search skopeo

      yum install -y skopeo

      # --override-os linux 参数只在非 Linux 宿主机上需要,如 MacOS
      skopeo --override-os linux inspect docker://hello-world | jq '.RepoTags' | tr -d '[]", ' | sort -u
      
      # 在 centos 上,上述命令还可以被简写成如下形式
      skopeo inspect docker://hello-world | jq '.RepoTags' | tr -d '[]", ' | sort -u
      

    参考资料

    相关文章

      网友评论

          本文标题:查找 docker 镜像的所有 tag

          本文链接:https://www.haomeiwen.com/subject/cpzuaktx.html