docker安装 搭建私库 删除私库镜像 打印私库镜像 的shell脚本[通俗易懂]

docker安装 搭建私库 删除私库镜像 打印私库镜像 的shell脚本[通俗易懂]#!/bin/bash#本脚本可以打印私有镜像库中所有的镜像#私有镜像库地址HUB_URL=hub.dy.com:5000#取得所有私有镜像库的所有镜像IMAGESLIST=$(curl-shttp://${HUB_URL}/v2/_catalog)#echo${IMAGESLIST}#删除后2个字符IMAGESLIST=${IMAGESLIST::-2}#删除…

大家好,又见面了,我是你们的朋友全栈君。

1.安装docker shell脚本

#!/bin/bash

hub_docker="hub.dy.com"

yum install -y epel-release docker

sed -i "s#--selinux-enabled --log-driver=journald#--selinux-enabled=false --insecure-registry $hub_docker:5000 --log-driver=json-file --storage-driver=overlay2#g"  /etc/sysconfig/docker

# 开机自启
/usr/bin/systemctl daemon-reload
/usr/bin/systemctl enable docker
/usr/bin/systemctl start docker

2.私服的搭建 shell脚本

#!/bin/bash

docker pull registry

[ -d /home/registry ] || mkdir -p /home/registry
cat <<EOF >/home/registry/config.yml
version: 0.1
log:
  fields:
    service: registry
storage:
  delete:
    enabled: true
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3
EOF

docker run -itd -v /home/registry/:/var/lib/registry/ -v /home/registry/config.yml:/etc/docker/registry/config.yml -p 5000:5000 --restart=always --privileged=true --name registry registry

3.删除私库里面的镜像 shell脚本

#!/bin/bash

docker_name="$1"
docker_tag="$2"
docker_hub_url="hub.dy.com:5000"
docker_registry_container_id=`docker ps |grep registry |awk '{print $1}'`

if [ "$docker_tag" = "" ]; then
	docker_tag="latest"
fi

#获取image的sha256
function get_docker_sha256(){
	docker pull $docker_hub_url/$docker_name:$docker_tag > /dev/null 2>&1    #先下载下来 获取sha256
	sha256=`docker inspect $docker_hub_url/$docker_name:$docker_tag | grep RepoDigests -A 5 | grep $docker_hub_url| grep sha256|awk -F '@' '{print $2}'|awk -F'"' '{print $1}'`
	#docker rmi  $docker_hub_url/$docker_name:$docker_tag		#然后删除本地镜像  是否删除
	echo $sha256
}

#删除镜像索引
function delete_images_index(){
    sha256=`get_docker_sha256`
	echo $sha256
	curl -I -X DELETE http://$docker_hub_url/v2/$docker_name/manifests/$sha256
}

#删除镜像数据
function delete_images_data(){
	docker exec -it $docker_registry_container_id registry garbage-collect /etc/docker/registry/config.yml 
}

function main()
{
	delete_images_index
	delete_images_data
	systemctl restart docker	#重启docker  否则再次push 已经删除的镜像会出错
}

main

4.打印私库里面的所有镜像 shell脚本

#!/bin/bash

#本脚本可以打印私有镜像库中所有的镜像
#私有镜像库地址
HUB_URL=hub.dy.com:5000
#取得所有私有镜像库的所有镜像
IMAGESLIST=$(curl -s http://${HUB_URL}/v2/_catalog)
#echo ${IMAGESLIST}
#删除后2个字符
IMAGESLIST=${IMAGESLIST::-2}
#删除前面17个字符
IMAGESLIST=${IMAGESLIST:17}
#echo ${IMAGESLIST}
#要将$a分割开,先存储旧的分隔符
OLD_IFS="$IFS"
#设置分隔符
IFS="," 
#如下会自动分隔
arr=($IMAGESLIST)

#遍历数组
for IMAGENAME in ${arr[@]}
do
	#去掉引号
	IMAGENAME=${IMAGENAME:1}
	IMAGENAME=${IMAGENAME::-1}
	#echo $IMAGENAME
	S1=$(curl -s http://${HUB_URL}/v2/${IMAGENAME}/tags/list)
	
	#取得[]中间的版本列表
	S1=${S1#*[}
	S1=${S1%]*} 
	#echo $S1
	
	arr1=($S1)
	#遍历数组
	for VAR in ${arr1[@]}
	do
		#去掉引号
		VAR=${VAR:1}
		VAR=${VAR::-1}
		echo $HUB_URL/$IMAGENAME:$VAR
	done
done

#恢复原来的分隔符
IFS="$OLD_IFS"
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161293.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Docker镜像自动执行脚本.sh

    Docker镜像自动执行脚本.sh由于博客现在在docker中部署的,每次打包部署,需要停掉旧容器->删除旧容器->删除镜像->将新的jar包打包成镜像->再次运行,每次发布都需要重复的执行此操作,于是想将所有命令写成脚本,jar包上传之后,运行脚本即可。命令:app_name=’java-blog’app_port=’8081’# 停止正在运行的容器echo ‘……stop container……’docker stop ${app_name}# 删除容器echo ‘…..

    2022年6月13日
    189
  • 群晖自带内网穿透_群晖内网解析

    群晖自带内网穿透_群晖内网解析1.打开docker程序,注册表搜索blichus找到blichus/wyc_linux_64双击下载2.下载完成在左侧映像找到刚才下载的镜像,双击配置启动3.点高级设置4.勾选启用自动重新启动5.网络勾选使用与dockerhost相同的网络6.环境选项卡点加号前边大写TOKEN(务必大写一致)后边值填写你的隧道token7.最后点应用完成就可以了,每次在网页端修改隧道之后要记得重…

    2022年8月31日
    3
  • docker(11)Dockerfile 中的COPY与ADD 命令「建议收藏」

    docker(11)Dockerfile 中的COPY与ADD 命令「建议收藏」前言Dockerfile中提供了两个非常相似的命令COPY和ADD,本文尝试解释这两个命令的基本功能,以及其异同点,然后总结其各自适合的应用场景。Build上下文的概念在使用dock

    2022年7月28日
    3
  • Docker 开启2375端口提供外部访问

    Docker 开启2375端口提供外部访问1、编辑docker.service#vim/usr/lib/systemd/system/docker.service在ExecStart=/usr/bin/dockerd-current后增加-Htcp://0.0.0.0:2375-Hunix://var/run/docker.sock[Unit]Description=DockerApplicationContainerEngineDocumentation=https://docs.docker.c..

    2022年5月9日
    57
  • Docker(三)- 从镜像运行启动容器「建议收藏」

    Docker(三)- 从镜像运行启动容器「建议收藏」文章目录从镜像运行启动容器容器启动后运行的命令`ENTRYPOINT`和`CMD`启动容器时覆盖`ENTRYPOINT`和`CMD“-d`后台运行`dockerexec`进入容器,运行指定命令`–name`和`–restart=always“–rm`和`dockercp`从镜像运行启动容器从一个镜像可以运行启动一个或多个容器。所谓容器,我们可以理解为是一个虚拟的计算机,其中运行着操作系统,操作系统中运行着我们部署的应用。从tomcat镜像启动容器:do

    2022年9月2日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号