Docker Registry安装和应用小记
安装机器地址
1 | master 172.16.147.129 master.bruce.com |
获取registry官方镜像(此处选择tag为2的私有仓库版本)
1 | # 此处选用的版本为 registry:2 的版本 |
创建auth认证文件htpasswd
1 | # 只是生成htpasswd文件,生成完成后容器就会退出 |
使用Docker Compose创建Docker Registry服务
准备docker registry yml 文件
1 | # docker registry yml 文件 |
Docker Registry 目录树结构
1 | docker-registry/ |
Docker Registry 相关命令
1 | # 启动服务docker(需要在 docker-compose.yml 文件所在目录运行) |
记录Docker Registry Server地址
允许HTTP访问Docker Registry
1 | # (若是较新的docker版本中 修改/etc/default/docker中的$DOCKER_OPTS 即可) |
登录Docker Registry
1 | docker login master.bruce.com:5000 |
测试向私有仓库推送、下载image
1 | docker image tag myapp master.bruce.com:5000/myapp:v1 |
访问registry-api并查看仓库内的镜像信息
1 | curl http://master.bruce.com:5000/v2/_catalog |
docker-registry在kubernetes上的应用
1 | # 首先需要创建 docker-registry secret |
删除私有仓库内镜像信息
- 在kubernetes的环境中使用docker registry,每次部署都会生成一个tag的docker image,长此以往,docker registry占用的硬盘会越来越大,而且其中无用的包占比特别高,所以在网上找到了一个使用python编写的脚本,用来定时清除无用的docker image,以释放硬盘空间节省资源。
Ref: https://github.com/burnettk/delete-docker-registry-image
安装 delete_docker_registry_image 脚本
1 | curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/null |
加入环境变量
1 | # 注意!!! |
测试删除
1 | sudo delete_docker_registry_image --image {what image want to be deleted} |
注意点
- 如果docker配置了代理,那么docker registry的仓库地址需要加入到/etc/systemd/system/docker.service.d/https-proxy.conf 中的NO_PROXY中去(如果系统挂了代理,最好也把仓库地址放到全局的.bashrc中的no_proxy中去,以防无法访问),否则在docker login时会无法登陆。
- 当无法登陆私有仓库时,并找不到对应解决办法,systemctl restart docker 是最有效的解决办法
Thanks for watching!