#Docker官方私有仓库registry
#官方只提供了API接口,不方便使用,就写了个shell
#docker-registry安装配置http://www.cnblogs.com/elvi/p/8384604.html

#使用:
#复制代码保存为 img_registry.sh
 sh img_registry.sh  -h   #查看帮助

# HUB=hub.test.com:5000 改为自己的地址

#shell代码 git地址https://gitee.com/almi/docker/blob/master/0.Shell/img_registry.sh

#!/bin/bash
#cnetos7,docker-ce v17.12.0,registry v2.6.2
#Docker registry 私有仓库镜像查询、删除、上传、下载 #Author Elven <elven89@qq.com>
#Blog http://www.cnblogs.com/elvi/p/8384675.html #root
[[ $UID -ne 0 ]] && { echo "Run in root user !";exit; }
#need jq ,get json data
[[ -f /usr/bin/jq ]] || { echo 'install jq';yum install -y jq &>/dev/null; } #参数 variable
#registry容器名称,默认registry
RN=${RN:-registry}
#访问网址,默认localhost:5000
HUB=${HUB:-localhost:5000}
HUB=hub.test.com:5000 #检测 check
function Check_hub() {
[[ `curl -s $HUB/v2/_catalog` == "Failed connect" ]] && { echo -e "\033[31m$HUB 访问失败\033[0m";exit; }
} #查询images
function Select_img() {
IMG=$(curl -s $HUB/v2/_catalog |jq .repositories |awk -F'"' '{for(i=1;i<=NF;i+=2)$i=""}{print $0}')
[[ $IMG = "" ]] && { echo -e "\033[31m$HUB 没有docker镜像\033[0m";exit; }
#echo "$HUB Docker镜像:"
for n in $IMG;
do
TAG=$(curl -s http://$HUB/v2/$n/tags/list |jq .tags |awk -F'"' '{for(i=1;i<=NF;i+=2)$i=""}{print $0}')
for t in $TAG;
do
echo "$n:$t";
done
done
} #删除images
function Delete_img() {
for n in $IMGS;
do
IMG=${n%%:*}
TAG=${n##*:}
i=1
[[ "$IMG" == "$TAG" ]] && { TAG=latest; n="$n:latest"; }
Digest=`curl --header "Accept: application/vnd.docker.distribution.manifest.v2+json" -Is ${HUB}/v2/${IMG}/manifests/${TAG} |awk '/Digest/ {print $NF}'`
[[ -z "$Digest" ]] && { echo -e "\033[31m$IMG:$TAG 镜像不存在\033[0m";} || {
URL="${HUB}/v2/${IMG}/manifests/${Digest}"
Rs=$(curl -Is -X DELETE ${URL%?}|awk '/HTTP/ {print $2}')
[[ $Rs -eq 202 ]] && { let i++;echo "$n 删除成功"; } || { echo -e "\033[31m$n 删除失败\033[0m"; } }
done
#registry垃圾回收 RN=registry
[[ "$i" -gt 1 ]] && { echo "Clean...";docker exec ${RN} /bin/registry garbage-collect /etc/docker/registry/config.yml &>/dev/null;docker restart ${RN} &>/dev/null; }
} #删除镜像所在目录(清除所有 -dd .* )
#简单高效,删库跑路,必备技能
function Delete_img_a() {
[[ -f /usr/bin/docker ]] || echo 'No docker !'
[[ -z $(docker ps |awk '/'$RN'/ {print $NF}') ]] && { echo "$RN容器不存在!";exit; }
for n in $IMGS;
do
IMG="${n%%:*}"
docker exec $RN rm -rf /var/lib/registry/docker/registry/v2/repositories/$IMG
done
echo '清理 Clean ...'
docker exec $RN bin/registry garbage-collect /etc/docker/registry/config.yml &>/dev/null
docker restart $RN &>/dev/null
} #上传 push
function Push() {
for IMG in $IMGS;
do
echo -e "\033[33m docker push $IMG to $HUB \033[0m"
docker tag $IMG $HUB/$IMG
docker push $HUB/$IMG
docker rmi $HUB/$IMG &>/dev/null
done
} #下载 pull
function Pull() {
for IMG in $IMGS;
do
echo -e "\033[33m dokcer pull $IMG from $HUB \033[0m"
docker pull $HUB/$IMG
docker tag $HUB/$IMG $IMG
docker rmi $HUB/$IMG &>/dev/null
done
} case "$1" in
"-h")
echo
echo "#默认查询images"
echo "sh $0 -h #帮助 -d #删除 -dd #清理空间"
echo " -pull img1 img2 #下载 -push #上传"
echo
echo "#示例:删除 nginx:1.1 nginx:1.2 (镜像名:版本)"
echo "sh $0 -d nginx:1.1 nginx:1.2 "
echo "sh $0 -dd nginx #删除nginx所有版本"
echo
echo "#定义仓库url地址hub.test.com:5000(默认 localhost:5000)"
echo "env HUB=hub.test.com:5000 /bin/sh $0 -d nginx:1.1 "
echo
;;
"-d")
Check_hub
IMGS=${*/-dd/}
IMGS=${IMGS/-d/}
Delete_img
;;
"-dd")
Check_hub
IMGS=${*/-dd/}
IMGS=${IMGS/-d/}
Delete_img_a
;;
"-pull")
IMGS=${*/-pull/}
Pull
;;
"-push")
IMGS=${*/-push/}
Push
;;
*)
Check_hub
Select_img
;;
esac

Docker registry cli 私有仓库镜像查询、删除、上传、下载 shell的更多相关文章

  1. Docker registry 私有仓库镜像查询、删除、上传、下载 shell

    #Docker官方私有仓库registry #官方只提供了API接口,不方便使用,就写了个shell #docker-registry安装配置http://www.cnblogs.com/elvi/p ...

  2. Docker Registry搭建私有仓库

    利用Registry镜像搭建Docker私有仓库遇到了很多坑,说来也是找到的资料都是杂而不精的东西,所以也没少走了弯路,现在回过头看去感觉好多坑还是别人给挖的··· 不过努力的最终结果还是好的,因为找 ...

  3. Ubuntu Docker Registry 搭建私有仓库

    服务器版本 Ubuntu 16.04 LTS. 安装命令: $ docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --rest ...

  4. docker registry (私有仓库)

    首先要导入registry的镜像文件 1.普通的registry 一条命令创建一个仓库 docker run -d -p 5000:5000 --restart=always --name regis ...

  5. Docker——Registry 通过Shell管理私有仓库镜像

    使用方法: 复制代码保存为 image_registry.sh sh image_registry.sh  -h   #查看帮助 HUB=10.0.29.104:5000 改为自己的地址 #!/bin ...

  6. Docker——Registry搭建私有镜像仓库

    前言 在 Docker 中,当我们执行 docker pull xxx 的时候,它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库 ...

  7. docker 构建 https 私有仓库 Registry

    1.安装docker # docker install docker 2.拉取仓库镜像 # docker pull registry 3.生成认证certificate # mkdir ~/certs ...

  8. Docker:搭建私有仓库(Registry 2.4)

    一.背景 首先,Docker Hub是一个很好的用于管理公共镜像的地方,我们可以在上面找到想要的镜像(Docker Hub的下载量已经达到数亿次):而且我们也可以把自己的镜像推送上去.但是,有的时候, ...

  9. docker之私有仓库镜像管理

    一.查看本地镜像 二.给镜像打标记(tag ) [root@node03 ~]# docker tag wordpress:v1 192.168.1.197:5000/wordpress:v1 2.删 ...

  10. Python Docker 查看私有仓库镜像【转】

    文章来源:python Docker 查看私有仓库镜像 pip 安装: # 首先安装epel扩展源: yum -y install epel-release # 更新完成之后,就可安装pip: yum ...

随机推荐

  1. 使用 AWS CLI 管理 EC2

    EC2 EC2 是 AWS 的云服务器服务 EC2: Elastic Compute Cloud 创建实例 选择一个系统镜像(AMI): AMI(Amazon Machine Image)定义了启动实 ...

  2. 【selenium + python】之BSTestRunner生成测试报告时报错:NameError: name 'unicode' is not defined

    好久没生成报告了,最近使用的时候报了一个错误!用的这个报告模板BSTestRunner但是汇报下面的错误: NameError: name 'unicode' is not defined 经查询得知 ...

  3. Kubernetes-13:存储卷Volume介绍及使用

    Volume介绍 Volume存在的意义 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题,首先,当容器崩溃时,kubelet会重启它,但是容器中的文件将丢失--容器以 ...

  4. (八)Redis 主从复制、切片集群

    一.主从复制 1.主从关系 都说的 Redis 具有高可靠性,这里有两层含义:一是数据尽量少丢失,二是服务尽量少中断.AOF 和 RDB 保证了前者,而对于后者,Redis 的做法就是将一份数据同时保 ...

  5. 【JS设计模式笔记】神奇的魔术师-简单工厂模式(创建型)

    简单工厂模式(Simple Factory):又叫静态工厂方法,由一个工厂对象决定创建某一种产品对象类的实例.主要用来创建同一类对象. 第一次需求 开发一个登录模块的需求,用户名输入框如果输入的内容不 ...

  6. PTA甲级—树

    1.树的遍历 1004 Counting Leaves (30分) 基本的数据结构--树,复习了链式前向星,bfs遍历判断即可 #include <cstdio> #include < ...

  7. java_day2_常量,变量,数据类型,运算符

    一.常量 常量:在Java程序运行过程中其值不能发生改变的量 分类: 1.字面值常量: 整数常量 表示所有的整数,包括负数 10 -8 小数常量 表示所有的小数 1.23 -3.14 布尔常量 tru ...

  8. 如何判断一个网站是用的Nginx,还是Apache

    事件起因: 接手了同事移交过来的一个网站,但是不知道这个网站是用什么做代理的,于是就去网上查资料   解决办法: 打开cmd窗口,输入以下命令即可 curl --head 域名/IP 注意,--hea ...

  9. 数据库运维实操优质文章分享(含Oracle、MySQL等) | 2024年7月刊

    本文为大家整理了墨天轮数据社区2024年7月发布的优质技术文章/文档,主题涵盖Oracle.MySQL.PostgreSQL等主流数据库系统以及国产数据库的深度教程和实用指南.从基础的安装配置到复杂的 ...

  10. for 和双重 for 的区别?

    1. 内层的循环可以看作外层循环的语句 2. 外层循环执行 1 次 ,内层循环执行全部