-
registry 的相关配置见官方文档: https://docs.docker.com/registry/configuration
-
在 LAIN 中每次修改完 config.yaml 后需要重启 registry container 才能生效
filesystem:
storage:
filesystem:
rootdirectory: /var/lib/registry
s3:
storage:
s3:
accesskey: ABCDEFGHIJ0123456789
secretkey: AB12C3dE4fGhIvmMB4TZrpypR0rOJ2G5WhGUPn9L
region: us-west-1 #important if use amazon filesystem
regionendpoint: http://s3.domain.svc #optional endpoints
bucket: test
secure: true
v4auth: true
chunksize: 5242880
rootdirectory: /registry
auth 相关信息见文档,LAIN 集群中如何打开 auth 可以参考 auth 文档。
LAIN 中的 token 规则采用 JWT(Json Web Token),jwt 主要包括三部分 Header, claimset, signature,具体见文档.
注意: 在authorization server 中最主要的是kid的生成,这部分在官网是没有对应文档的,需要根据docker source code来生成:https://github.com/docker/libtrust/blob/master/util.go#L158-L207
auth:
token:
realm: authorization server address
issuer: "auth server"
service: "domain"
rootcertbundle: public certificate
LAIN 中 auth 的配置依赖 etcd,通过如下方式设置 registry 的 auth 信息:
etcdctl set /lain/config/auth/registry '{"realm":"http://console.<domain>/api/v1/authorize/registry/", "issuer":"auth server", "service":"<domain>"}'
,其中 console 目前是 authorization server
如果config.yaml有问题,需要先docker rm registry,然后等待deploy拉起最新的registry
尽量先本地测试,保证config.yaml 无误后再重启registry,
storage 只能支持一种!
基本API, 请查阅: https://docs.docker.com/registry/spec/api/
curl -X GET /v2/_catalog
curl -X GET /v2/{repo}/tags/list
-
获取所有的repositories: curl -X GET /v2/_catalog
-
通过repositories中获取对应repo的所有的tag信息: curl -X GET /v2/{repo}/tags/list
-
软删除指定repo:tag的image: curl -X DELETE /v2/{repo}/manifests/{digest of tag}
-
registry节点的image blob文件删除: registry garbage-collect config.yaml
真正文件删除时最好不再对registry进行写操作
storage delete 必须配置为true
且为了兼容signature storage deprecating,需要如下配置,见:
https://docs.docker.com/registry/configuration/#compatibility
https://github.com/docker/distribution/issues/1661
-
当 registry 的存储后端为本地文件系统时,只能存在一个 instance,升级时需要在当前 registry 节点提前拉取最新的 registry image
-
当 registry 的存储后端为 moosefs 或 S3 之类的分布式文件系统时,可以存在多个 instance,但是当升级时如果只有一个实例则同样需要在存在 registry 的节点提前拉取最新的 registry image