说明
registry v1
没有提供认证,鉴权的功能,需要自己通过类似nginx
的反向代理来做简单的认证鉴权
registry v2
提供了认证、鉴权的接口,但是需要自己实现认证鉴权的功能,或者是对接第三方的认证鉴权
鉴于此,对接第三方的认证鉴权是比较合适的选择,而业界使用比较多的registry
认证鉴权是cesanta/docker_auth
现在基于docker_auth
来搭建docker registry
- 二进制形式安装
- 下载编译
registry
git clone https://github.com/docker/distribution.git
cd distribution/cmd/registry
go build
- 编辑配置文件
cp sample.yml conf.yml
配置文件如下
version: 0.1
log:
fields:
service: registry
level: debug
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
tls:
certificate: /path/to/registry/registry.crt
key: /path/to/registry/registry.key
auth:
token:
realm: "https://docker_auth.ip:5001/auth"
service: "Docker registry"
issuer: "Acme auth server"
rootcertbundle: /path/to/docker_auth/server-cert.pem
- 注意:证书要提前规划化好
- http 模块的证书,是需要放到
docker deamon
配置的信任证书的地方,一般是/etc/docker/cert.d/registry_xx_dome/registry.crt
这样在执行docker login
等命令是,就可以建立tls连接了- auth token 处的证书,是为了
registry
与auth
建立tls
连接用的- 由于
docker deamon
与registry
交互式,registry
会把auth
地址返回回来,让docker deamon
去申请授权,所以docker deamon
会直接与auth
进行交互,而建立tls
连接时,需要认证签名auth
证书的证书,
此时需要把,centos
环境下,需要把注意是,该证书的签发证书放到/etc/pki/ca-trust/source/anchors/
下
然后执行update-ca-trust systemctl restart docker
- heath 模块配置去掉,负责,
docker deamon
与registry
交互,会出发registry
进行heath check
导致失败- log 日志级别设置成
debug
会打印比较详尽的日志
- 启动
registry
nohup ./registry serve config.yml &
- 下载编译
docker_auth
git clone https://github.com/cesanta/docker_auth.git
cd auth_server
govendor sync
#添加两个常量到main.go中
go build
添加的两个常量是
const ( Version = "xx" BuildId = "xx" )
- docker_auth 配置
注意证书配对
- 启动
docker_auth
nohup ./auth_server ../examples/simple.yml &
7.测试略
网友评论