美文网首页kubernetes
一些常用的脚本

一些常用的脚本

作者: 陈sir的知识图谱 | 来源:发表于2018-12-17 13:42 被阅读0次

    docker 相关

    将docker 镜像全部保存到本地。

    docker images | awk 'NR>1{name=split($1,img,"/");cmd="docker image save "$1":"$2" -o " img[2]".tar";print(cmd)}'
    docker images | awk 'NR>1{name=split($1,img,"/");cmd="docker image save "$1":"$2" -o " img[2]".tar";system(cmd)}'
    

    第一条命令用于预览生成的命令。
    第二条用于实际保存镜像

    • NR>1 从第2行开始。Docker images 第一行为title,所以要去掉Splite 将images 的repo 部分截掉。 rancher/coreos-etcd:v3.2.24 截掉之后name 值为2 表示有两段,img 变量成为数组img[1]=rancherr img[2]=coreos-etcd:v3.2.24
    • cmd变量用来拼凑外部命令,注意"是用来书写字符的。system函数用来执行外部命令。print 是将命令打印出来

    将当前文件夹下所有镜像(tar)导入

    ls | awk '{cmd="docker image load -i "$1;print(cmd)}'
    ls | awk '{cmd="docker image load -i "$1;system(cmd)}'
    

    非rancher 开头的镜像

    docker images | awk 'NR>1 && /^[^rancher]/ {print}'
    

    以 rancher开头的景象

    docker images | awk 'NR>1 && /^[^rancher]/ {print}'
    

    将 rancher 开头的镜像全部保存到本地

    docker images | awk 'NR>1 && /^rancher/ {count=split($1,img,"/");cmd="docker image save "$1":"$2 " -o " img[2]".tar"; print(cmd)}'
    docker images | awk 'NR>1 && /^rancher/ {count=split($1,img,"/");cmd="docker image save "$1":"$2 " -o " img[2]".tar"; system(cmd)}'
    

    将非rancher开头的镜像保存到本地

    docker images | awk 'NR>1 && /^[^rancher]/ {count=split($1,img,"/");cmd="docker image save "$1":"$2 " -o " img[2]".tar"; print(cmd)}'
    docker images | awk 'NR>1 && /^[^rancher]/ {count=split($1,img,"/");cmd="docker image save "$1":"$2 " -o " img[2]".tar"; system(cmd)}'
    

    或者

     docker images | awk 'NR>1 && ! /^rancher/ {count=split($1,img,"/");cmd="docker image save "$1":"$2 " -o " img[2]".tar"; print(cmd)}'
     docker images | awk 'NR>1 && ! /^rancher/ {count=split($1,img,"/");cmd="docker image save "$1":"$2 " -o " img[2]".tar"; system(cmd)}'
    

    将镜像保存为repo-imagename-version 形式的tar包

    docker images | awk 'NR>1 && ! /^rancher/ {target=$1;count=gsub(/\//,"-",target);cmd="docker image save "$1":"$2 " -o "target"-"$2".tar";print(cmd) }'
    docker images | awk 'NR>1 && ! /^rancher/ {target=$1;count=gsub(/\//,"-",target);cmd="docker image save "$1":"$2 " -o "target"-"$2".tar";system(cmd) }'
    

    使用gsub 函数全局替换,函数签名gsub(express【原始字符传中想要替换掉的字符串】, subsitution【想要替换为的字符串】 ,target【原始字符串】)
    target=$1;count=gsub(///,"-",target) 说明:
    target=$1 将第一列的值深拷贝到target中,因为后面save 还需要用原始的镜像名称。
    count=gsub(///,"-",target) 将target 字符串中的 / 字符,替换为 -, 并将替换后的字符放到target中,将每行替换掉的数量放到count中。
    注意返回值是替换的数量,而替换后的值存在target中,即在执行前,target是原始字符串,执行后,target 就是替换完成后的字符串了。/ 在正则中需要使用\ 进行转义。

    image.png

    相关文章

      网友评论

        本文标题:一些常用的脚本

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