registry v2的一些心得

来源:互联网 发布:免费语音电话软件 编辑:程序博客网 时间:2024/06/12 22:54

近期由于负责公司的PAAS平台的镜像仓库部分,对registry v2做了一些研究以及以它为基础开发的PAAS平台镜像仓库的过程中,遇到的问题做一些总结。

首先先说下原生镜像仓库的部署以及搭建流程。
最简单的仓库搭建:
1、docker pull docker.io/registry
2、docker run -d -p 5000:5000 --restart=always --name registry docker.io/registry

以上是最为简单的仓库搭建,但是对于实际生产的环境还有很多不足,像可持续化存储,权限控制等等。

下面介绍下可持续化存储:

说白了也就是通过docker自带的把容器中的卷路径挂载到宿主机上功能,通过-v参数来实现,registry v2的默认存储路径是/var/lib/registry,可以直接docker run -e XXXX=/var/lib/registry 这样设置,一般的话通过原生镜像仓库的配置文件来进行配置。


上图中就是关于registry v2存储相关的部分配置,delete配置的意思就是是否支持删除镜像文件,filesystem(auth server开源项目当然你也可以选择其他的存储方式,我这里选择的是文件系统存储),rootdirectory就是存储的路径,manitenance是设置仓库是否设置为只读的,也就是不能上传镜像。

除此之外比较重要的就是权限控制了

registry的权限认证可以选择三种方式silly、token、htpasswd,其中silly我这次没有做一些预演,但是token和htpasswd我这边针对这两种方式说一下,htpasswd是通过apache提供的htpasswd工具生成的一组用户名密码文件,密码是通过加密算法加密过的,其实就是N组用户名密码记录到一个文件里,通过这个做一个简单的用户名控制。但是还达不到生产所需要的目的,下面主要讲下token的权限控制。


首先理解下上图中所提到的auth认证的机制,然后我们看下registry的配置文件相关配置项:



issuer:发行者,必须和auth server的issuer一致。

realm:auth server的地址

rootcertbundle:自签名证书路径

service:任意字符串,获取token的时候要用到


剩下的配置项就是http的配置了,addr是registry的地址,tls是安全传输协议,certificate是自签名证书,key是我们生成证书的私钥。


上面就是目前所需要的整个registry全部配置了。


接下来说下auth server,其实auth server就是用的开源的项目。https://github.com/cesanta/docker_auth

具体说下它的配置方面,


其中token设置项的issuer和registry的issuer保持一致,users是用户的信息。接下来才是最重要的权限控制


account是用户名,service是镜像仓库定义的那个service配置项,type就是类型,一般就是repository和registry,这个是根据请求registry v2接口所需要的scope来确定的,name是进行操作的名字。actions是进行的动作。其中/.+/是登录用户的意思,""是匿名用户的意思。


原创粉丝点击