七、构建docker私有仓库,镜像 push pull delete

注意:建议配置在内网,单独使用一台服务器,这里的单独是指不要和其他 docker 镜像一起使用

1、私有仓库搭建与配置

(1)拉取私有仓库镜像
 docker pull registry

(2)启动私有仓库容器
 docker run -di --name=registry -p 5000:5000 registry

(3)打开浏览器 输入地址http://192.168.88.161:5000/v2/_catalog看到{"repositories":[]} 表示私有仓库搭建成功并且内容为空

(4)修改daemon.json (添加私有仓库地址)
(vi /etc/docker/daemon.json)
 添加以下内容,保存退出。
 {"insecure-registries":["192.168.88.161:5000"]}
 此步用于让 docker信任私有仓库地址

(5)重启docker 服务
 systemctl restart docker

2、私有仓库镜像上传和拉取

(1)标记此镜像为私有仓库的镜像
docker tag km:v1 192.168.88.161:5000/km:v1

(2)启动私服容器
docker start registry

(3)上传标记的镜像
docker push 192.168.88.161:5000/km:v1

(4)拉取标记的镜像
docker pull 192.168.88.161:5000/km:v1

3、浏览器访问私有仓库地址

(1)查询仓库镜像列表
http://192.168.88.161:5000/v2/_catalog
效果:{"repositories":["abc","dss","tss"]}

(2)查询tss镜像版本标签列表信息
http://192.168.88.161:5000/v2/tss/tags/list
效果:{"name":"tss","tags":["0609","V0602"]}

(3)自行拼接镜像名,私有仓库IP:端口/镜像名:标签
如:192.168.88.161:5000/tss:0609

(4)获取指定镜像的 hash 值
http://192.168.88.161:5000/v2/tss/manifests/V0602

4、私有仓库镜像的删除

参考资料
https://blog.csdn.net/weixin_34418883/article/details/91994000
https://www.isolves.com/it/cxkf/rongqi/2022-05-06/54067.html
(1)进去仓库容器内部
docker exec -it registry sh
(2)开启删除功能
vi /etc/docker/registry/config.yml
添加,如下图位置
delete:
    enabled: true
(3)重启仓库
docker restart registry

在这里插入图片描述

(3)查询镜像列表 
命令:curl http://仓库ip:仓库端口/v2/_catalog
测试:curl http://192.168.88.161:5000/v2/_catalog
结果:{"repositories":["abc","dss","tss"]}

(4)查询镜像版本列表 
命令:curl http://仓库ip:仓库端口/v2/镜像名/tags/list
测试:curl http://192.168.88.161:5000/v2/tss/tags/list
结果:{"name":"tss","tags":["0609","V0602"]}

(5)查询 Digest 
命令:curl --header "Accept: application/vnd.docker.distribution.manifest.v2+json" -I  -X GET http://仓库ip:仓库端口/v2/镜像名/manifests/版本
测试:curl --header "Accept: application/vnd.docker.distribution.manifest.v2+json" -I  -X GET http://192.168.88.161:5000/v2/tss/manifests/V0602
结果:
HTTP/1.1 200 OK
Content-Length: 2201
Content-Type: application/vnd.docker.distribution.manifest.v2+json
Docker-Content-Digest: sha256:9c1a0021bc340a6950e6cb0e7705e608d872a4626ca73ea6a05eb9d365695fe5
Docker-Distribution-Api-Version: registry/2.0
Etag: "sha256:9c1a0021bc340a6950e6cb0e7705e608d872a4626ca73ea6a05eb9d365695fe5"
X-Content-Type-Options: nosniff
Date: Wed, 06 Jul 2022 03:49:43 GMT

Docker-Content-Digest 后的就是该镜像的Digest值

(6)删除镜像
命令:curl --header "Accept: application/vnd.docker.distribution.manifest.v2+json" -X DELETE http://仓库ip:仓库端口/v2/镜像名/manifests/Digest值
测试:
curl --header "Accept: application/vnd.docker.distribution.manifest.v2+json" -X DELETE http://192.168.88.161:5000/v2/tss/manifests/sha256:9c1a0021bc340a6950e6cb0e7705e608d872a4626ca73ea6a05eb9d365695fe5

(7)垃圾回收
命令:docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml

(8)注意:如果删除的是最后一个版本那么对应的镜像名还是存在的,需要采用强制删除操作


(9)强制删除
命令:docker exec registry rm -rf /var/lib/registry/docker/registry/v2/repositories/镜像名
测试:docker exec registry rm -rf /var/lib/registry/docker/registry/v2/repositories/tss

(10)垃圾回收
命令:docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml

版权声明:本文为CSDNHXW原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。