Docker仓库Registry维护和管理
前面两篇文章说明了registry的版本离线安装
V1版本
https://www.qnjslm.com/ITHelp/413.html
V2版本
https://www.qnjslm.com/ITHelp/420.html
下面来说说我们日常仓库维护和管理
添加镜像
我们配置docker的registry地址为我们的registry服务器
查看下本地的images镜像
[root@registry opt]# docker images
假如我们要把httpd的镜像上传到registry上,一般我们会给镜像打上一个标签,这里我就是直接上传
[root@registry opt]# docker push httpd
我们把本地的images先删除,删除前请确认镜像没有被容器使用
[root@registry opt]# docker rmi httpd
然后我们从服务器上拉取镜像
[root@registry opt]# docker pull httpd
使用下载的镜像启动一个docker
[root@registry opt]# docker run -d -p 80:80 --name myserver httpd //启动docker
[root@registry opt]# docker ps //查看docker进程
[root@registry opt]# curl http://localhost //访问docker内容
以下是删除步骤,是比较麻烦的一个步骤
V1版本删除镜像
[root@registry ~]# curl -X DELETE https://localhost:5000/v1/repositories/openshift3/ose-docker-registry/tags/v3.0.1.0 -k
以下分享一个脚本,可以做V1版本镜像删除以及空间回收
https://github.com/King-Kuhn/docker_registry_clean
当前功能:
1.清理指定image:tag
2.当image所有的tag均删除后,会尝试删除该image历史冗余的所有镜像
3.清理某image下所有无用的层
操作方法:
1.下载本工具包docker_registry_clean
2.将docker_registry_clean目录放在docker私有仓库所在主机的某个目录下(需要有操作仓库目录的权限)
3.执行如下命令
删除指定镜像指定tag:
python delete-image.py {registry_path} {image_name:image_tag}
删除某镜像无用层:
python delete-image.py {registry_path} {image_name}
----------{registry_path}是仓库所在目录,其实就是启动仓库的时候指定的目录(-v /home/registry-storage:/home/registry-storage -w /home/registry-storage) 默认V1版本的仓库根目录下有这两个目录:images repositories
----------{image_name:image_tag} 镜像:tag
V2版本的registry清理
首现我们需要修改registry的配置文件,运行删除镜像操作
1、首现我们执行docker ps 查看registry信息,记住第一列的ID
2、我们执行docker inspect ID 查看容器的相信信息
3、在详细信息中我们找到这个容器的yml配置文件
/etc/docker/registry/config.yml
4、通过docker exec 命令进入容器中
[root@registry opt]# docker exec -it cbbc17f68e49 /bin/sh
6、修改容器配置
vi /etc/docker/registry/config.yml
在storage下面添加
delete:
enabled: true
7、退出容器我们使用docker 重启registry容器
[root@registry opt]# docker restart cbbc17f68e49
8、上传镜像到容器中,这里不说明,上传完成后我们进入到容器查看大小
9、根据官方文档,我们执行API的删除动作
DELETE /v2/<name>/manifests/<reference>
name:镜像名称,通过以下方式可以获取
curl -X GET http://localhost:5001/v2/_catalog
reference: 镜像对应sha256值,从以下路径查看,在容器里面
/var/lib/registry/docker/registry/v2/repositories/alex/registry-www.opskb.com/_manifests/tags/latest/index/sha256
curl -I -X DELETE http://localhost:5001/v2/alex/registry-www.opskb.com/manifests/sha256:6532fbcfdd73746ae5370ae9f86f3a1c582314b7d02f9f033806a653ca9a3a6e
看到HTTP/1.1 202 Accepte,已经删除成功
查看tags,已经为NULL
curl -X GET http://localhost:5001/v2/alex/registry-www.opskb.com/tags/list
下面是没删除之前
curl -X GET http://127.0.0.1:5001/v2/alex/registry-www.opskb.com/tags/list
这里其实我们只是删除了指定的tags,本身的images并没有删除,查看空间目录并没有变化,然后我们执行docker回收空间
registry garbage-collect /etc/docker/registry/config.yml
详细配置https://docs.docker.com/registry/configuration/
V2版本的删除脚本
- 本文标签: 技术分享
- 本文链接: http://www.iamlk.cn/article/27
- 版权声明: 本文由Leonidax原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权