docker-registry 私有仓库镜像 之 查看与删除

2024-05-13 03:48

本文主要是介绍docker-registry 私有仓库镜像 之 查看与删除,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

查看私有仓库有哪些镜像

如果私有仓库带有认证,在使用 curl 命令的时候需要带上 -u 参数

使用方法:

curl -XGET -u <仓库用户名>:<用户名密码> http://<仓库ip地址>:<仓库端口>/v2/_catalog

curl -XGET -u admin:admin http://192.168.91.18:5000/v2/_catalog

输出的格式为 json

{"repositories":["centos","debian","mysql","nginx","php"]}

如果输出的镜像很多,可以用 python 格式化 json 格式,方便查看

curl -s -XGET -u admin:admin http://192.168.91.18:5000/v2/_catalog | python -m json.tool

这样看,也会直观很多

{"repositories": ["centos","debian","mysql","nginx","php"]
}

查看私有仓库镜像的tag

使用方法:

curl -XGET -u <仓库用户名>:<用户名密码> http://<仓库ip地址>:<仓库端口>/v2/<镜像名称>/targs/list

curl -XGET -u admin:admin http://192.168.91.18:5000/v2/centos/tags/list

输出的格式为 json

{"name":"centos","tags":["latest","7"]}

如果输出的 tag 很多,可以用 python 格式化 json 格式,方便查看

curl -s -XGET -u admin:admin http://192.168.91.18:5000/v2/centos/tags/list | python -m json.tool

这样看,也会直观很多

{"name": "centos","tags": ["latest","7"]
}

删除私有仓库指定镜像

确认是否开启删除功能

如果没有开启,执行删除镜像操作的时候,会返回如下两种结果

{"errors":[{"code":"UNSUPPORTED","message":"The operation is unsupported."}]}
HTTP/1.1 405 Method Not Allowed
Content-Type: application/json; charset=utf-8
Docker-Distribution-Api-Version: registry/2.0
X-Content-Type-Options: nosniff
Date: Fri, 18 Mar 2022 04:12:22 GMT
Content-Length: 78

查找 registry 容器

docker ps | grep registry

以自己实际获取的信息为准

3745255afa90   registry   "/entrypoint.sh /etc…"   About an hour ago   Up About an hour   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   registry

进入容器

registry 进入容器的终端是 sh

docker exec -it 3745255afa90 sh

一般都是在 /etc/docker/registry/config.yml

registry 镜像里面有 vi 没有 vim

vi /etc/docker/registry/config.yml

我拉取的 registry 镜像默认没有配置 delete 功能

version: 0.1
log:fields:service: registry
storage:cache:blobdescriptor: inmemoryfilesystem:rootdirectory: /var/lib/registry
# 增加这里的 delete 和 enabled ,注意 yaml 语法格式
# 如果有 delete ,并且 enable 为 true 表示已经开启了删除功能delete:enabled: true
http:addr: :5000headers:X-Content-Type-Options: [nosniff]
health:storagedriver:enabled: trueinterval: 10sthreshold: 3

修改完成后,重启 registry 容器

docker restart 3745255afa90

获取指定镜像的 hash 值

使用方法

curl --header "Accept:application/vnd.docker.distribution.manifest.v2+json" -I \ -u <仓库用户名>:<用户名密码> http://<仓库ip地址>:<仓库端口>/v2/<镜像名称>/manifests/<镜像 tag>

curl -I -XGET --header "Accept:application/vnd.docker.distribution.manifest.v2+json" \
-u admin:admin http://192.168.91.18:5000/v2/centos/manifests/latest

Docker-Content-Digest 这里就会出现镜像的 hash 值

HTTP/1.1 200 OK
Content-Length: 529
Content-Type: application/vnd.docker.distribution.manifest.v2+json
Docker-Content-Digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
Docker-Distribution-Api-Version: registry/2.0
Etag: "sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc"
X-Content-Type-Options: nosniff
Date: Fri, 18 Mar 2022 04:06:42 GMT

删除私有仓库中的镜像

使用方法

curl -I -XDELETE -u <仓库用户名>:<用户名密码> \ http://<仓库ip地址>:<仓库端口>/v2/<镜像名称>/manifests/<获取的 hash 值>

curl -I -XDELETE -u admin:admin \
http://192.168.91.18:5000/v2/centos/manifests/sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc

返回的状态码是 202

HTTP/1.1 202 Accepted
Docker-Distribution-Api-Version: registry/2.0
X-Content-Type-Options: nosniff
Date: Fri, 18 Mar 2022 04:24:23 GMT
Content-Length: 0

再次查看 centos 镜像的 tag 列表

curl -XGET -u admin:admin http://192.168.91.18:5000/v2/centos/tags/list

现在只有一个 7 这个 tag 的镜像了

{"name":"centos","tags":["7"]}

这篇关于docker-registry 私有仓库镜像 之 查看与删除的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/984600

相关文章

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命

docker 重命名镜像的实现方法

《docker重命名镜像的实现方法》在Docker中无法直接重命名镜像,但可通过添加新标签、删除旧镜像后重新拉取/构建,或在DockerCompose中修改配置文件实现名称变更,感兴趣的可以了解一下... 目录使用标签(Tagging)删除旧的php镜像并重新拉取或构建使用docker Compose在Do

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

Linux中查看操作系统及其版本信息的多种方法

《Linux中查看操作系统及其版本信息的多种方法》在服务器运维或者部署系统中,经常需要确认服务器的系统版本、cpu信息等,在Linux系统中,有多种方法可以查看操作系统及其版本信息,以下是一些常用的方... 目录1. lsb_pythonrelease 命令2. /etc/os-release 文件3. h

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

linux配置podman阿里云容器镜像加速器详解

《linux配置podman阿里云容器镜像加速器详解》本文指导如何配置Podman使用阿里云容器镜像加速器:登录阿里云获取专属加速地址,修改Podman配置文件并移除https://前缀,最后拉取镜像... 目录1.下载podman2.获取阿里云个人容器镜像加速器地址3.更改podman配置文件4.使用po

Python实现自动化删除Word文档超链接的实用技巧

《Python实现自动化删除Word文档超链接的实用技巧》在日常工作中,我们经常需要处理各种Word文档,本文将深入探讨如何利用Python,特别是借助一个功能强大的库,高效移除Word文档中的超链接... 目录为什么需要移除Word文档超链接准备工作:环境搭建与库安装核心实现:使用python移除超链接的

Java 单元测试之Mockito 模拟静态方法与私有方法最佳实践

《Java单元测试之Mockito模拟静态方法与私有方法最佳实践》本文将深入探讨如何使用Mockito来模拟静态方法和私有方法,结合大量实战代码示例,带你突破传统单元测试的边界,写出更彻底、更独立... 目录Mockito 简介:为什么选择它?环境准备模拟静态方法:打破“不可变”的枷锁传统困境解法一:使用M

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke