Docker私有仓库操作----命令行

查看所有镜像

http://10.206.29.162:5000/v2/_catalog

{"repositories":["dashboard","glusterfs","kubernetes-dashboard-amd64","metrics-scraper","nacos-server","nginx"]}
查看单个镜像信息

http://ip:port/v2/image_name/tags/list

 浏览器访问 http://xxx.xxx.xxx.xxx:5000/v2/nginx/tags/list

{"name":"nginx","tags":["latest"]}
拉取镜像清单
http://xxx.xxx.xxx.xxx:5000/v2/nginx/manifests/latest

 


启动
docker run -d -v /app/registry:/var/lib/registry -p 5000:5000 -e REGISTRY_STORAGE_DELETE_ENABLED=true --restart=always --name registry registry:v1.0
删除

方案一:

用官方模块delete_docker_registry_image

1、添加 模块 delete_docker_registry_image

官方操作文档:https://github.com/burnettk/delete-docker-registry-image

2、删除之前需要先添加环境变量

[root@1a01vlb5970zzzz repositories]# cat /etc/profile|grep regis
export REGISTRY_DATA_DIR=/app/registry/docker/registry/v2

注意:如果需要远程删除,就需要在远程用户的HOME目录的.bashrc中添加需要的环境变量

delete_docker_registry_image --image wurstmeister/kafka
# 删除镜像之后如果不重启,重新上传会报层数据已存在,必须重启才能重新上传
systemctl restart docker   

方案二:

# --header "Accept: application/vnd.docker.distribution.manifest.v2+json" 这个header 是必须要加的,不加的话Content-Type 是v1+prettyjws,获取的digest是错误的!!
headers = {'Accept':'application/vnd.docker.distribution.manifest.v2+json'}
url = "http://" + self.registry + "/v2/" + args['image_name'] +'/manifests/' + args['tag']
print(url)
getres =requests.get(url,headers=headers)
digest = getres.headers['Docker-Content-Digest']
deleteurl = "http://" + self.registry + "/v2/" + args['image_name'] +'/manifests/' + digest
delres = requests.delete(deleteurl,headers=headers)
print(delres.content)
print(delres.headers)
print(delres.status_code)
​

# 垃圾回收  
docker exec -it da33dd273367 bin/registry garbage-collect /etc/docker/registry/config.yml &>/dev/null
 

 

私有仓库删除后重新上传的问题

问题:重新上传报错层存在,并且查询私有仓库镜像发现没上传成功

[root@1a01vlb5970zzzz repositories]# delete_docker_registry_image --image nginx
INFO     [2020-08-19 15:37:42,598]  Deleting /app/registry/docker/registry/v2/blobs/sha256/23/231d40e811cd970168fb0c4770f2161aa30b9ba6fe8e68527504df69643aa145
INFO     [2020-08-19 15:37:42,599]  Deleting /app/registry/docker/registry/v2/blobs/sha256/18/189cce606b29fb2a33ebc2fcecfa8e33b0b99740da4737133cdbcee92f3aba0a
INFO     [2020-08-19 15:37:42,599]  Deleting /app/registry/docker/registry/v2/blobs/sha256/be/bee5d581ef8bfee2b5a54685813ba6ad9bbe922115d7aef84a21a9dbfcc2d979
INFO     [2020-08-19 15:37:42,599]  Deleting /app/registry/docker/registry/v2/blobs/sha256/00/000eee12ec04cc914bf96e8f5dee7767510c2aca3816af6078bd9fbe3150920c
INFO     [2020-08-19 15:37:42,604]  Deleting /app/registry/docker/registry/v2/blobs/sha256/eb/eb22865337de3edb54ec8b52f6c06de320f415e7ec43f01426fdafb8df6d6eb7
INFO     [2020-08-19 15:37:42,609]  Deleting /app/registry/docker/registry/v2/repositories/nginx
[root@1a01vlb5970zzzz repositories]# docker push 10.206.52.220:5000/nginx:latest
The push refers to repository [10.206.52.220:5000/nginx]
4fc1aa8003a3: Layer already exists 
5fb987d2e54d: Layer already exists 
831c5620387f: Layer already exists 
latest: digest: sha256:189cce606b29fb2a33ebc2fcecfa8e33b0b99740da4737133cdbcee92f3aba0a size: 948
[root@1a01vlb5970zzzz repositories]# curl -X GET http://10.206.52.220:5000/v2/_catalog
{"repositories":["gluster/gluster-centos","kubernetesui/metrics-scraper","nacos-server","quay-mirror.qiniu.com/coreos/flannel","wurstmeister/kafka"]}
​

解决方案:

重启

systemctl restart docker
 
原文地址:https://www.cnblogs.com/cherylgi/p/13534412.html