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获取中镜像与标签
|
|
查看仓库中内容
|
|