自动拉取和推送docker镜像到私有仓库(skopeo)

1、相关资源导航
https://blog.csdn.net/zyj81092211/article/details/123068347

2、环境介绍
操作系统:Centos 7.9
docker版本:20.10.17
私有仓库:harbor
工具:shell、skopeo

3、安装skopeo
(1)下载源码包
https://github.com/containers/skopeo/releases
在这里插入图片描述

wget https://github.com/containers/skopeo/archive/refs/tags/v1.9.2.tar.gz
tar -xvf v1.9.2.tar.gz

(2)安装go-md2man并获取程序目录
https://centos.pkgs.org/7/epel-aarch64/golang-github-cpuguy83-go-md2man-1.0.4-5.el7.aarch64.rpm.html
在这里插入图片描述

rpm -ivh https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/g/golang-github-cpuguy83-go-md2man-1.0.4-5.el7.x86_64.rpm
whereis go-md2man 

在这里插入图片描述
(3)进入skopeo目录,进行容器编译

docker run -v  $PWD:/src -v /usr/bin/go-md2man:/go/bin/go-md2man -w /src -e CGO_ENABLED=0 golang make BUILDTAGS=containers_image_openpgp GO_DYN_FLAGS=

在这里插入图片描述
(4)运行skopeo执行文件

bin/skopeo -v

在这里插入图片描述
(5)移动软件目录到/usr/local下,并创建bin文件软连接

mv skopeo-1.9.2/ /usr/local/skopeo
ln -s /usr/local/skopeo/bin/skopeo /usr/local/bin/skopeo

)
(6)编译后的bin文件分享
编译未成功的可以试试这个
https://download.csdn.net/download/zyj81092211/86501240

4、skopeo命令
在这里插入图片描述

skopeo login --tls-verify=false -u xxx -p xxx harbor.wtown.com

在这里插入图片描述
推送一个镜像

skopeo copy --insecure-policy --src-tls-verify=false --dest-tls-verify=false docker://docker.io/mysql:8.0.30-oracle docker://harbor.wtown.com/wtown/mysql:8.0.30-oracle

在这里插入图片描述
仓库中已有
在这里插入图片描述
5、创建同步脚本

vi /usr/local/bin/autoimagesync

添加如下(更换私有仓库信息)

set -e

input_info=$1
source_image_name=`echo $input_info | awk -F ':' '{ print $1  }'`
destination_image_name=`echo $input_info | awk -F ':' '{ print $1  }'  | awk  -F '/' '{ print $NF  }'`
image_tag=`echo $input_info | awk -F ':' '{ print $2  }'`

if [ ! -n "$image_tag" ]; then
   echo "未输入TAG,使用默认latest"
   image_tag=latest
else
   echo 'TAG是$image_tag'
fi

#定义私有仓库信息
harbor_registry='harbor.wtown.com'
project='wtown'
user='xxx'
password='xxx'

echo "登陆私有仓库..."
skopeo login --tls-verify=false -u ${user} -p ${password} ${harbor_registry}
if [[ $? -eq 0 ]] ;then
        echo "登陆成功成功!!!"
fi

echo "开始同步镜像..."
skopeo copy --insecure-policy --src-tls-verify=false --dest-tls-verify=false docker://docker.io/${source_image_name}:${image_tag} docker://${harbor_registry}/${project}/${destination_image_name}:${image_tag}
if [[ $? -eq 0 ]] ;then
        echo "镜像同步成功!!!"
fi


添加执行权限

chmod +x /usr/local/bin/autoimagesync

测试如下
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值