docker registry v2 迁移至另外一个 registry v2

旧时模样 提交于 2019-12-26 23:26:06

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

思路

采用 docker pull, docker tag, docker push 的方式完成迁移

用到的 docker registry v2 api

主要用到两种个 registry v2 api 获取镜像列表 curl 127.0.0.1:15000/v2/_catalog?n=5000 | jq -r '.repositories | .[]' > images-list.txt #5000指的列出来的个数 获取单个镜像 tag curl -q 127.0.0.1:15000/v2/production/www/tags/list | jq -r '.tags | .[]'

脚本实现

脚本如下

#!/bin/bash
# filename speed-pull-push.sh
set -e

FIRST_REGISTRY=127.0.0.1:15000
SECOND_REGISTRY=10.10.5.7:5000
while read -r repo
	do
        for tag in `curl -s $FIRST_REGISTRY/v2/$repo/tags/list | jq -r '.tags | .[]'`
        do
            source_image=$FIRST_REGISTRY/$repo:$tag
            destination_image=$SECOND_REGISTRY/$repo:$tag
            echo "docker pull $source_image && docker tag $source_image $destination_image && docker push $destination_image && docker rmi $destination_image && docker rmi $source_image"
            #docker pull $source_image && docker tag $source_image $destination_image && docker push $destination_image && docker rmi $destination_image && docker rmi $source_image
        done
done < ./images-list.txt

为了加快速度采用并行的方式运行 sh speed-pull-push.sh | parallel -j 10 #10并行运行 10 个任务

欢迎加入QQ群一块讨论学习 1016108829

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!