命令行获取docker远程仓库镜像列表

获取思路

通过curl获取镜像tagjson串,解析后得到${image}:${tag}的格式

curl获取示例

# curl [:-s] ${API}/${image}/tags
curl https://registry.hub.docker.com/v1/repositories/nginx/tags

获取脚本docker-search

docker-search.sh

#!/bin/bash
API="https://registry.hub.docker.com/v1/repositories"
DEFAULT_NAME="nginx"
DEFAULT_TIMEOUT=3 function Usage(){
cat << HELP Usage: docker-search NAME[:TAG] docker-search list all tags for docker image on a remote registry. Example:
docker-search (default nginx)
docker-search nginx
docker-search nginx:1.15.8
docker search nginx | docker-search
docker search nginx | docker-search :1.15.8
echo nginx | docker-search
echo nginx | docker-search :1.15.8
HELP
} ARG=$1
if [[ "$ARG" =~ "-h" ]];then
Usage
exit 0
fi function ParseJson(){
tr -d '[\[\]" ]' | tr '}' '\n' | awk -F: -v image=$1 '{if(NR!=NF && $3 != ""){printf("%s:%s\n",image,$3)}}'
} function GetTags(){
image=$1
tag=$2
ret=`curl -s ${API}/${image}/tags`
tag_list=`echo $ret | ParseJson ${image}`
if [ -z "$tag" ];then
echo -e "$tag_list"
else
echo -e "$tag_list" | grep -w "$tag"
fi
} if [ -z $ARG ] || [[ ${ARG:0:1} == ":" ]];then
if [ -x /usr/bin/timeout ];then
images=`timeout $DEFAULT_TIMEOUT` awk '{print $1}' | grep -v "NAME" || echo $DEFAULT_NAME
else
images=`awk '{print $1}' | grep -v "NAME"`
fi
else
images=`echo $ARG | awk -F: '{print $1}'`
fi
tag=`echo $ARG | awk -F: '{print $2}'` for i in ${images}
do
tags=`GetTags $i $tag`
count=`echo $tags | wc -w`
if [[ $count -gt 0 ]];then
echo -e "IMAGE [$i:$tag]:"
echo -e "$tags"
echo
fi
done

使用

# 获取帮助
$ docker-search --help # 查询ngnix
$ docker-search nginx

参考

docker-tags 命令行获取docker远程仓库上指定镜像的tag列表

命令行获取docker远程仓库镜像列表的更多相关文章

  1. docker远程仓库镜像推送到本地仓库

    #!/bin/bashimageid=(`docker images |grep -v REPOSITORY|awk '{print $3}'`)image=(`docker images |grep ...

  2. Shell 命令行获取本机IP,grep的练习

    Shell 命令行获取本机IP,grep的练习 在 mac 下面输入 ifconfig 或者在 linux 下面输入 ip a 就可以得到我们的网卡信息.不过通常情况下,我们需要查看的是我们的IP地址 ...

  3. python命令行获取参数

    python命令行获取参数 import sys # python获取参数 input_file = sys.argv[1] output_file = sys.argv[2] print(input ...

  4. 在本地用命令行创建一个git仓库,并推送到远程

    首先,进入的gitStore目录下(没有的话自己创建一个) 1.git init 在gitStore目录下 初始化一个git仓库 2.git add 复制一个文件到gitStore目录下,然后执行gi ...

  5. 命令行工具tabby--gi t仓库Token的使用

    命令行工具tabby--git仓库Token的使用 欢迎关注H寻梦人公众号 前言 再见 Xshell !这款开源的终端工具逼格更高! 终端神器--Tabby Terminal electerm is ...

  6. docker 私有仓库镜像的存储位置

    docker 私有仓库的镜像 是存储在5739360d1030 registry "docker-registry" 3 days ago Up 28 hours 0.0.0.0: ...

  7. 在命令行获取标准输入序列的反互序列,pep序列和长度信息

    近期对序列文件处理的比較多,时常要看一些核酸序列的反向互补序列,长度.可能的翻译序列. 曾经我常用seqBuider 来查看.假设能在命令行直接查看.想必是极好的. 这是一个perl脚本.只是我把它的 ...

  8. Windows Git Bash命令行下创建git仓库并更新到github

    大二的时候就听过老师说有一个叫git的版本管理工具,当时只是听老师说说而已,也没有去使用它,因为当时用过svn,就感觉自己没多少东西需要git管理. 最近几天,我经常在开源中国看别人的帖子,看到别人对 ...

  9. MySQL数据库(9)----从命令行获取元数据

    1. mysqlshow 命令提供的信息与某些 SHOW 语句很相似,因此可以从命令行提示符获取数据库和表的信息. (i)列出服务器所管理的数据库: root@javis:~$ mysqlshow - ...

随机推荐

  1. 大数据 | 分布式文件系统HDFS 练习

    本次作业来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3292 利用Shell命令与HDFS进行交互 以”./bin/dfs ...

  2. redis-sentinel 高可用方案实践

    近期公司的一块核心业务使用redis作为配置转发中心,存在单点问题,考虑服务的可靠性.针对业务需求,我们确定了我们的需求: 异地跨机房容灾 故障自动切换 尽可能高的保证数据不丢失 针对以上需求,我们分 ...

  3. 百度开源上传组件webuploader 可上传多文件并带有进度条

    //上传多文件 function UploadMultiFile() { var uploader = WebUploader.create({ // 选完文件后,是否自动上传. auto: true ...

  4. [E2E_L9]GOMFCTemplate的融合进阶

    在前面出现的融合方法中,最突出的问题就是每次运算,都需要将整个推断的过程全部操作一遍,这样肯定是费时间的--所以我们需要将能够独立的地方独立出来,但是这个过中非常容易出现溢出的错误--经过一段时间的尝 ...

  5. js 秒的倒计时,将秒转换为时分秒显示

    在VUE 中的使用 {{moveMin}} // ...methods: { // 补0 formatBit (val) { val = +val ? val : ' + val }, // 秒转时分 ...

  6. understand-show-slave-status-g

    https://dba.stackexchange.com/questions/22623/mysql-exec-master-log-pos-value-greater-than-read-mast ...

  7. sudo passwd root:没有相关指令

    在linux里如果想要修改密码,就输入这个指令,但是会出现没找到这个指令,是因为环境变量里没有passwd. 解决:查找passwd的位置,sudo find / -name passwd 然后进入p ...

  8. [LeetCode] 251. Flatten 2D Vector 压平二维向量

    Implement an iterator to flatten a 2d vector. For example,Given 2d vector = [ [1,2], [3], [4,5,6] ] ...

  9. Java之变量和数据类型

    变量 什么是变量 变量就是初中的代数的概念.例如一个简单的方程,x,y都是变量 y=x+1 在Java中,变量分为两种:基本类型的变量和引用类型的变量 在Java中,变量必须先定义后使用,在定义变量的 ...

  10. Python3 列表list合并的4种方法

    方法1: 直接使用"+"号合并列表 aList = [1,2,3] bList = ['www', 'pythontab.com'] cList = aList + bList   ...