docker没有提供查询某个软件可使用的版本号的命令;
docker没有提供查询某个软件版本号有哪些软件;

但是可以通过自定shell脚本满足上述2个需求。

创建docker-tags命令

新建/usr/local/bin/docker-tags文件,复制以下脚本,配置可执行权限:sudo chmode +x dockr-tags

  1. #!/bin/bash
  2. API="https://registry.hub.docker.com/v1/repositories"
  3. DEFAULT_NAME="nginx"
  4. DEFAULT_TIMEOUT=3
  5. function Usage(){
  6. cat << HELP
  7. Usage: docker-tags NAME[:TAG]
  8. docker-tags list all tags for docker image on a remote registry.
  9. Example:
  10. docker-tags (default nginx)
  11. docker-tags nginx
  12. docker-tags nginx:1.15.8
  13. docker search nginx | docker-tags
  14. docker search nginx | docker-tags :1.15.8
  15. echo nginx | docker-tags
  16. echo nginx | docker-tags :1.15.8
  17. HELP
  18. }
  19. ARG=$1
  20. if [[ "$ARG" =~ "-h" ]];then
  21. Usage
  22. exit 0
  23. fi
  24. function ParseJson(){
  25. tr -d '[\[\]" ]' | tr '}' '\n' | awk -F: -v image=$1 '{if(NR!=NF && $3 != ""){printf("%s:%s\n",image,$3)}}'
  26. }
  27. function GetTags(){
  28. image=$1
  29. tag=$2
  30. ret=`curl -s ${API}/${image}/tags`
  31. tag_list=`echo $ret | ParseJson ${image}`
  32. if [ -z "$tag" ];then
  33. echo -e "$tag_list"
  34. else
  35. echo -e "$tag_list" | grep -w "$tag"
  36. fi
  37. }
  38. if [ -z $ARG ] || [[ ${ARG:0:1} == ":" ]];then
  39. if [ -x /usr/bin/timeout ];then
  40. images=`timeout $DEFAULT_TIMEOUT` awk '{print $1}' | grep -v "NAME" || echo $DEFAULT_NAME
  41. else
  42. images=`awk '{print $1}' | grep -v "NAME"`
  43. fi
  44. else
  45. images=`echo $ARG | awk -F: '{print $1}'`
  46. fi
  47. tag=`echo $ARG | awk -F: '{print $2}'`
  48. for i in ${images}
  49. do
  50. tags=`GetTags $i $tag`
  51. count=`echo $tags | wc -w`
  52. if [[ $count -gt 0 ]];then
  53. echo -e "IMAGE [$i:$tag]:"
  54. echo -e "$tags"
  55. echo
  56. fi
  57. done

使用示例

  1. $ docker-tags -help [0]
  2. Usage: docker-tags NAME[:TAG]
  3. docker-tags list all tags for docker image on a remote registry.
  4. Example:
  5. docker-tags (default nginx)
  6. docker-tags nginx
  7. docker-tags nginx:1.15.8
  8. docker search nginx | docker-tags
  9. docker search nginx | docker-tags :1.15.8
  10. echo nginx | docker-tags
  11. echo nginx | docker-tags :1.15.8

简易版

  1. #!/bin/sh
  2. repo_url=https://registry.hub.docker.com/v1/repositories
  3. image_name=$1
  4. curl -s ${repo_url}/${image_name}/tags | json_reformat | grep name | awk '{print $2}' | sed -e 's/"//g'

执行示例

  1. $ ./list_img_tags.sh tensorflow/tensorflow
  2. latest
  3. 0.10.0
  4. 0.10.0-devel
  5. 0.10.0-devel-gpu
  6. 0.10.0-gpu
  7. 0.10.0rc0
  8. 0.10.0rc0-devel
  9. 0.10.0rc0-devel-gpu
  10. 0.10.0rc0-gpu
  11. 0.11.0
  12. ...