一、docker-registry
自建仓库
此处查看英文文档 =>官方开源文档,部署服务器 Deploy a registry server
- 自定义镜像数据存储目录为/data/docker/registry/data
- http基础验证用户密钥配置为/data/docker/registry/auth/htpasswd
- 启动命令为
docker run -d -p 5000:5000 --restart=always --name registry \
-v /data/docker/registry/data:/var/lib/registry \
-e REGISTRY_STORAGE_DELETE_ENABLED=true \ ## 开启api删除权限,但还无法完全删除镜像文件
-e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \
-v /data/docker/registry/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
registry:latest
- 创建用户名密码的方式为
$ mkdir auth
$ docker run \ ## 使用docker镜像
--entrypoint htpasswd \
httpd:2 -Bbn testuser testpassword > auth/htpasswd
或
htpasswd -Bbn [user] [passwd] > auth/htpasswd
-B:强制密码加密
-b:使用命令行中的密码而不是提示输入密码
-n:不更新加密文件,只将加密后的用户名密码显示在屏幕上
Registry API
更多访问传送门 => HTTP API V2
二、镜像垃圾空间回收
当前仓库配置默认配置删除时,不允许删除镜像,因此tag被删除的镜像会成为游离状态的无用文件,空间占用会越来越大
- 更改registry配置,允许删除镜像
# registry容器内/etc/docker/registry/config.yml
storage:
delete:
enabled: true
- registry容器内手动执行
garbage-collect
Usage:
registry garbage-collect <config> [flags]
Flags:
-m, --delete-untagged=false: delete manifests that are not currently referenced via tag
-d, --dry-run=false: do everything except remove the blobs
-h, --help=false: help for garbage-collect
- 容器外,使用docker命令执行
docker exec <container> <command>
,指定registry的容器,再指定要执行的命令docker exec registry registry garbage-collect /etc/docker/registry/config.yml