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