#Docker官方私有仓库registry
#官方只提供了API接口,不方便使用,就写了个shell
#docker-registry安装配置http://www.cnblogs.com/elvi/p/8384604.html #使用:
#复制代码保存为 img_registry.sh
# sh img_registry.sh -h #查看帮助 #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 ]] && { 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:
HUB=${HUB:-localhost:}
HUB=hub.test.com: #检测 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=
[[ "$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 ]] && { let i++;echo "$n 删除成功"; } || { echo -e "\033[31m$n 删除失败\033[0m"; } }
done
#registry垃圾回收 RN=registry
[[ "$i" -gt ]] && { 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 私有仓库镜像查询、删除、上传、下载 shell的更多相关文章

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

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

  2. docker registry 私有仓库 安装配置、查询、删除

    #++++++++++++++++++++++++++++++ #docker-registry 私有仓库 #搜索,下载register镜像 docker search registry docker ...

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

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

  4. Docker registry私有仓库(七)

    Docker registry私有仓库搭建基本几步流程(采用nginx+认证的方式) 1. 申请免费的ssl证书 https://buy.wosiqn.com/free 2. 设置nginx ssl证 ...

  5. Ubuntu 搭建docker registry 私有仓库

    一.为什么要搭建 docker 私有仓库 原因有几个: 项目需要,不希望将项目放到 docker hub 上. 环境需求,考虑网络.效率的问题,希望在私有服务器上建立自用的仓库,提高便利性和访问速度. ...

  6. docker registry私有仓库部署

    私有仓库服务端:12.40[root@centos7_golang ~]# docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry ...

  7. 8. docker image 的发布 与 docker registry 私有仓库

    一.分享image 1.注册 登陆 docker hub https://hub.docker.com/ 2.在本地 使用 docker login 输入 注册的账号密码 进行登陆 3.使用 dock ...

  8. 快速搭建Docker Registry私有仓库

    前提条件: 服务器已经安装Docker(我的服务器是CentOS 7) 服务器已经安装Docker Compose 满足以上条件时就可以开始搭建了: 1. 生成用户密码文件:(运行下面命令后会在当前目 ...

  9. python Docker 查看私有仓库镜像

      pip 安装: 首先安装epel扩展源: yum -y install epel-release 更新完成之后,就可安装pip: yum -y install python-pip 安装完成之后清 ...

随机推荐

  1. snowflake自增ID算法 (PHP版)

    /** * SnowFlake ID Generator * Based on Twitter Snowflake to generate unique ID across multiple * da ...

  2. 国内maven仓库地址

    Maven 中央仓库地址: 1.http://mvnrepository.com/ (推荐) 2.http://mirrors.ibiblio.org/maven2/ 3.http://repo1.m ...

  3. [BAT]操作系统定时任务调用批处理忽略error继续运行的方法

    如下,通过forfiles删除7天以前生成的一些文件,当不存在满足搜索条件的文件时,就会报错:ERROR: No files found with the specified search crite ...

  4. Mina 系列(二)之基础

    Mina 系列(二)之基础 Mina 使用起来多么简洁方便呀,就是不具备 Java NIO 的基础,只要了解 Mina 常用的 API,就可以灵活使用并完成应用开发. 1. Mina 概述 首先,看 ...

  5. dateframe取数据

    import numpy as npimport pandas as pd## x1=[1,2,3,4]# x2=[4,5,6,7]# x3=[7,8,9,10]# df=pd.DataFrame(# ...

  6. 类Pinterest Web原型制作分享——花瓣网

    这是一家基于兴趣的社交分享网站,网站为用户提供了一个简单地采集工具,帮助用户将自己喜欢图片重新组织和收藏.网站布局美观合理,内容丰富.此原型模板所用到的组件有按钮栏.菜单栏.搜索框.水平分割线.交互动 ...

  7. maven web 项目 打入 jar 包 , 和编译入 java 文件到 web-inf 下

    <outputDirectory>src\main\webapp\WEB-INF\classes</outputDirectory> 可以把 类文件编译到 web-inf 下 ...

  8. 2018.09.16 loj#10241. 取石子游戏 1(博弈论)

    传送门 好像是某年的初赛题啊. 有个很显然的结论. 当n" role="presentation" style="position: relative;&quo ...

  9. Django模型层(2)

    https://www.cnblogs.com/yuanchenqi/articles/8963244.html from django.db import models class Author(m ...

  10. MyEclipse 过期

    package util; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamRea ...