当前位置:网站首页>harbor 离线同步
harbor 离线同步
2022-08-06 02:23:00 【邱天_】
场景
客户环境为离线环境,只能把公司私服的镜像下载后,然后通过客户端中转传到客户的私服上
客户端在客户内网中,然后拨号到公司的内网
#!/bin/bash
# harbor的url
URL="https://10.27.6.59:31009/"
# 源harbor的ip加端口
SIP="10.27.6.59:31009"
# 目标harbor的ip加端口
TIP="172.16.104.111:443"
# 调用脚本时输入的源project名称
SPROJECT="20220722"
TPROJECT="library"
# 源harbor登陆用户名/密码
SUSER="beijing"
SPASS="XXXXXXXX"
# 目标harbor登陆用户名/密码
TUSER="admin"
TPASS="XXXXXXXX"
#添加服务器地址
cat /etc/docker/daemon.json | grep ${SIP}
if [ $? -eq 1 ];then
eval sed -i 's#]#,\"${SIP}\"]#g' /etc/docker/daemon.json
fi
cat /etc/docker/daemon.json | grep ${TIP}
if [ $? -eq 1 ];then
eval sed -i 's#]#,\"${TIP}\"]#g' /etc/docker/daemon.json
fi
systemctl restat docker
# 登录源harbor
docker login -u $SUSER -p $SPASS $SIP
# 登录目标harbor
docker login -u $TUSER -p $TPASS $TIP
# 提前设置的变量,无需修改
SAVE=""
DATE=$(date "+%Y%m%d")
#获取每个服务镜像的仓库地址,注意这里的page_size尽量选择你镜像的数量,因为主要是卡一整页内所有镜像名称
REPOS=$( curl -u ${
SUSER}:${
SPASS} -k --cert /etc/docker/certs.d/ca.crt -X GET -H "accept: application/json" "${URL}/api/v2.0/projects/${SPROJECT}/repositories?page_size=50" |python -m json.tool| grep \"name\" | awk -F '"' '{print $4}' | awk -F '/' '{print $2}')
echo ${REPOS}
# 循环遍历所有image的所有tag
for rp in ${REPOS}
do
#获取每个镜像的所有tag,同样注意修改page_size
TAGS=$( curl -u ${
SUSER}:${
SPASS} -k --cert /etc/docker/certs.d/ca.crt -X GET -H "accept: application/json" "${URL}/api/v2.0/projects/${SPROJECT}/repositories/${rp}/artifacts?with_tag=true&with_label=false&with_scan_overview=false&with_signature=false&with_immutable_status=false&page_size=50" |python -m json.tool| grep \"name\" | awk -F '"' '{print $4}' )
for t in ${TAGS}
do
SIMAGE=${SIP}"/"${SPROJECT}"/"${rp}:${t}
TIMAGE=${TIP}"/"${TPROJECT}"/"${rp}:${t}
docker pull ${SIMAGE}
docker tag ${SIMAGE} ${TIMAGE}
# docker rmi ${SIMAGE}
docker push ${TIMAGE}
echo "${SIMAGE}"
SAVE="${SAVE} ${SIMAGE}"
done
echo "===================="
done
echo ${SAVE}
#保存,导出
#mkdir -p ./export
#docker save ${SAVE} > ./export/${SPROJECT}"_"${DATE}.tar
边栏推荐
猜你喜欢

大咖说*计算讲谈社|AI 的价值探索:如何拓展商业边界?

leetcode链表oj题

基于Flask框架实现Mock Server

使用MySQL截取JSON串,结果为null

大专毕业,非科班出身转行测试,仅用6年时间独自带领技术团队做测试——一手烂牌打出王炸~

Students' illegal use of the database causes the school's IP to be permanently blocked

ansible 学习

Soul向港交所递交上市申请,持续发力社交元宇宙赛道

Wasabi Technologies领导团队新增日本和澳大利亚业务高管,以支持整个亚太区对热云存储的需求

micro-ros arduino esp32 ros2 笔记
随机推荐
【leetcode】4.寻找两个正序数组的中位数
Soul submitted a listing application to the Hong Kong Stock Exchange and continued to develop the social metaverse track
服务器安装部署
在香橙派OrangePi 3 LTS开发板上安装向日葵远程控制软件的操作方法
华为设备配置Smart Link负载分担
软件工程-大学体育馆管理系统类图
FTX.US将收购股票清算平台Embed,拓展股票交易业务
LeetCode每日两题01:滑动窗口-无重复字符的最长样子
MySQL -- 安装部署环境(一键安装脚本)
【HCIP】BGP实验
【回顾】树莓派4B与EC200U-CN的建立连接
淀粉与纤维素
Wasabi Technologies领导团队新增日本和澳大利亚业务高管,以支持整个亚太区对热云存储的需求
在靠近客户端的代理上缓存常用数据有什么特点?
LeetCode Daily 2 Questions 01: Flip word prefixes (both 1200 questions)
1320 _stm32f103 burn write programs using a serial port
Nacos Installation Guide
Decoding problem of serial communication between STM32 and K210 (based on punctual atomic source code)
ansible 学习
剑指offer第9题