本文最后编辑于   前,其中的内容可能需要更新。
                
                
                    
                
                 
                镜像搬运的必要性 由于业务原因经常有要求对镜像分组管理的要求,但很多镜像原本是重复的,并且都是单独的镜像,无法以单独的compose或者其他形式管理,要跨机器搬运就比较困难,原有的做法是新建一个临时的harbor仓库,做一个中转。
原有的搬运操作 原有的一些镜像是存储在单独的一台服务器上,以docker image形式存在的,所以只进行了打包和推送操作:
1 2 docker images|grep -v "REPOSITORY"|awk '{print "docker tag " $1":"$2 "harbor.local/$REGNAME/"  $1":"$2}' |awk '{system($0)}' docker images|grep "harbor.local"|awk '{print "docker push " $1":"$2}' |awk '{system($0)}' 
 
在另外一台机器上部署:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 import  requestsimport  jsonimport  osres = requests.get("https://harbor.local/api/repositories?project_id=3" , verify=False ) all_list = res.content.decode('utf-8' ) alist = json.loads(all_list) for  i in  alist:    imagename = i['name' ]     imagename1 = i['name' ].split('/' )[1 ]     shellcmd = f"docker pull harbor.local/{imagename} "      shellcmd1 = f"docker tag harbor.local/{imagename}  {imagename1} "      os.system(shellcmd)     os.system(shellcmd1) 
 
skopeo的使用和操作 安装 参照此链接  进行安装
基本使用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 USAGE:    skopeo [global options] command [command options] [arguments...] COMMANDS:      copy               从某个位置拷贝镜像到另一个,可以是本地也可以是仓库      inspect            查看对应镜像信息 类似docker inspect      delete             删除镜像,仅删除tag      manifest-digest    计算文件的md5值      standalone-sign    Create a signature using local files      standalone-verify  Verify a signature using local files      以上两个与镜像加密相关      login 登陆到某个registry 	 sync 同步镜像,类似copy   
 
登陆私有仓库
1 2 3 4 skopeo login harbor.local --tls-verify=false Username: admin Password:  Login Succeeded! 
 
拷贝到仓库:
1 2 3 4 5 6 7 8 9 10 11 12 skopeo copy docker-daemon:nginx:latest  docker://harbor.local/test/nginx:latest  --tls-verify=false WARN[0000] '--tls-verify' is deprecated, please set this on the specific subcommand  Getting image source signatures Copying blob cf388fcf3527 done   Copying blob c6d74dcb7fe7 done   Copying blob b50a193ebf2e done   Copying blob 2418679ca01f done   Copying blob 764055ebc9a7 done   Copying blob 165eb6c3c0d3 done   Copying config 4f380adfc1 done   Writing manifest to image destination Storing signatures