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中修改
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
参考: