docker registry介绍
Registry用于保存docker镜像,包括镜像的层次结构和元数据,用户可自建Registry,也可使用官方的Docker Hub
分类
- Sponsor Registry:第三方的registry,供客户和Docker社区使用
- Mirror Registry:第三方的registry,只让客户使用
- Vendor Registry:由发布Docker镜像的供应商提供的registry
- Private Registry:通过设有防火墙和额外的安全层的私有实体提供的registry
一个docker Registry上拥有两种功能:
- 提供镜像存储的仓库。
- 提供用户获取镜像时的认证功能。
- 同时提供当前服务器上所有可用镜像的搜索索引。
一个docker镜像仓库有仓库的名称,等同于yum的repostory。通常简称为repo。为了使的镜像和应用程序版本之间有意义上的关联关系。在docker一个仓库通常只存放一个应用程序的镜像。因此,这个仓库名就是应用程序名。通过给每个镜像额外添加一个组件叫tag,来标识每一个镜像。通常镜像名称:标签repo_name:tag才能唯一标识一个镜像。
为了可以快速创建registry,docker专门提供了一个程序包 docker-distribution 。https://hub.docker.com/r/distribution/registry/ regustry自身运行在容器中,而容器的文件系统会随着容器生命周期终止而删除,因此需要给registry定义存储卷,使用网络存储。
在yum的extras仓库有一个docker-registry的程序包。docker-distribution的主配置文件在 /etc/docker-distribution/registry/config.yml,所有上传的镜像存放在/var/lib/registry 。
| |
配置docker registry访问
非 docker hub 必须给定registry的地址端口,如果不是顶层仓库还要给定用户名。
docker push 默认基于https工作的,而服务器端使用的http,两者不兼容,需要标记为非加密、非安全的docker registry。
| |
编辑 /etc/docker/daemon.json 添加 insecure-registries ,并且名称一定要与仓库引用时使用的名称完全保持一致,多个以逗号分隔
| |
push的镜像存放在 /var/lib/registry/ 下,V2指的是registry的协议版本
| |
push时镜像会分层次,每一层都单独推送,单独存放。产生的镜像层次存放在 php/_layers/sha256/ ,真正存放的路径为 /var/lib/registry/docker/registry/v2/blobs 下
| |
通过api获取中镜像与标签
| |
查看仓库中内容
| |