docker搭建私服镜像库,需要用到registry的镜像。所以首先需要拉去registry镜像,然后创建容器。

1.拉取镜像并启动

#拉取镜像
docker pull registry

#创建容器
docker run -d -v C:\MyTemp\mydocker\registry:/var/lib/registry -p 5000:5000 --restart=always --name=registry registry

2.配置daemon.json

在daemon.json增加一行

{
    "insecure-registries": ["192.168.31.228:5000"]
}

ps:   linux的daemon.json在/etc/docker/daemon.json

docker desktop可以直接在setting中修改

#使用检查配置
docker info

 

3. Registry接口使用 

push一个镜像

3.1 查看API是否可用

curl -I -X GET 192.168.31.228:5000/v2/,返回200 OK代表可用。

3.2 查看所有镜像

curl -X GET 192.168.31.228:5000/v2/_catalog

3.3获取一个镜像的manifest

curl -I -X GET 192.168.31.228:5000/v2/<name>/manifests/<reference>,
<name>代表镜像名,reference可以使用tag

curl  -I --header "Accept:application/vnd.docker.distribution.manifest.v2+json" "http://192.168.31.59:5000/v2/java_ubuntu/manifests/latest"

3.4 获取一个镜像tag列表

192.168.31.228:5000/v2/docker_redis/tags/list

3.5删除一个镜像

删除镜像只能删除镜像的tag不能删除镜像的实际文件。

第一步:

修改容器中/etc/docker/registry/config.yml,给config.yml增加,然后重启

#docker cp config.yml docker_registry:/etc/docker/registry/config.yml

storage:
    delete:
        enabled: true

第二步:查询镜像的digest

curl  -I --header "Accept:application/vnd.docker.distribution.manifest.v2+json" "http://192.168.31.59:5000/v2/java_ubuntu/manifests/latest"

第三步:删除镜像

curl -I -X DELETE "http://192.168.31.59:5000/v2/java_ubuntu/manifests/sha256:440ac63d5dd85c0c5a2db44fe995f4b53cc4e4c9c4ebe6456f7e89543203da73"

 第四步:查看镜像 tag已经为null

第五步:删除实体文件

#删除实体文件
docker exec docker_registry rm -rf /var/lib/registry/docker/registry/v2/repositories/java_ubuntu
#垃圾回收
docker exec docker_registry bin/registry garbage-collect /etc/docker/registry/config.yml
#重启容器
docker restart docker_registry

 

3.6垃圾回收

docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml

参考:

docker registry详解_原来是木斯的博客-CSDN博客_docker registry

Docker私有仓库Registry删除镜像的方法 - 知乎

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐