原文地址

Registry 的配置基于 YAML 文件,下面会详细描述。虽然它带有默认值,但你应该在将系统移至生产环境之前进行详尽的检查。

1. 覆盖特定的配置选项

在从官方镜像运行 registry 的典型设置中,可以通过将 -e 参数传递环境变量到 docker run 或使用 ENV 指令从 Dockerfile 中指定一个配置变量。

要覆盖配置选项,请创建一个名为 REGISTRY_variable 的环境变量,其中 variable 是配置选项的名称,_(下划线)表示缩进级别。例如,可以配置 filesystem 存储后端的 rootdirectory

storage:filesystem:rootdirectory: /var/lib/registry

可以设置环境变量来覆盖这些值:

REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/somewhere

该变量将 /var/lib/registry 值覆盖到 /somewhere 目录。

注意:使用可配置为调整单个值的环境变量创建基本配置文件。不建议使用环境变量覆盖配置节(section)。

2. 覆盖整个配置文件

如果默认配置不适合你的使用,或者如果覆盖环境中的 key 时遇到问题,则可以指定 YAML 配置文件并将其作为卷装载到容器中。

通常,从头开始创建一个名为 config.yml 的新配置文件,然后在 docker run 命令中指定它:

$ docker run -d -p 5000:5000 --restart=always --name registry \-v `pwd`/config.yml:/etc/docker/registry/config.yml \registry:2

以此示例 YAML 文件为起点。

3. 配置选项列表

这些都是 registry 的配置选项。列表中的某些选项是互斥的。在完成配置之前,阅读有关每个选项的详细参考信息。

version: 0.1
log:accesslog:disabled: truelevel: debugformatter: textfields:service: registryenvironment: staginghooks:- type: maildisabled: truelevels:- panicoptions:smtp:addr: mail.example.com:25username: mailuserpassword: passwordinsecure: truefrom: sender@example.comto:- errors@example.com
loglevel: debug # deprecated: use "log"
storage:filesystem:rootdirectory: /var/lib/registrymaxthreads: 100azure:accountname: accountnameaccountkey: base64encodedaccountkeycontainer: containernamegcs:bucket: bucketnamekeyfile: /path/to/keyfilerootdirectory: /gcs/object/name/prefixchunksize: 5242880s3:accesskey: awsaccesskeysecretkey: awssecretkeyregion: us-west-1regionendpoint: http://myobjects.localbucket: bucketnameencrypt: truekeyid: mykeyidsecure: truev4auth: truechunksize: 5242880multipartcopychunksize: 33554432multipartcopymaxconcurrency: 100multipartcopythresholdsize: 33554432rootdirectory: /s3/object/name/prefixswift:username: usernamepassword: passwordauthurl: https://storage.myprovider.com/auth/v1.0 or https://storage.myprovider.com/v2.0 or https://storage.myprovider.com/v3/authtenant: tenantnametenantid: tenantiddomain: domain name for Openstack Identity v3 APIdomainid: domain id for Openstack Identity v3 APIinsecureskipverify: trueregion: frcontainer: containernamerootdirectory: /swift/object/name/prefixoss:accesskeyid: accesskeyidaccesskeysecret: accesskeysecretregion: OSS region nameendpoint: optional endpointsinternal: optional internal endpointbucket: OSS bucketencrypt: optional data encryption settingsecure: optional ssl settingchunksize: optional size valyerootdirectory: optional root directoryinmemory:  # This driver takes no parametersdelete:enabled: falseredirect:disable: falsecache:blobdescriptor: redismaintenance:uploadpurging:enabled: trueage: 168hinterval: 24hdryrun: falsereadonly:enabled: false
auth:silly:realm: silly-realmservice: silly-servicetoken:realm: token-realmservice: token-serviceissuer: registry-token-issuerrootcertbundle: /root/certs/bundlehtpasswd:realm: basic-realmpath: /path/to/htpasswd
middleware:registry:- name: ARegistryMiddlewareoptions:foo: barrepository:- name: ARepositoryMiddlewareoptions:foo: barstorage:- name: cloudfrontoptions:baseurl: https://my.cloudfronted.domain.com/privatekey: /path/to/pemkeypairid: cloudfrontkeypairidduration: 3000sstorage:- name: redirectoptions:baseurl: https://example.com/
reporting:bugsnag:apikey: bugsnagapikeyreleasestage: bugsnagreleasestageendpoint: bugsnagendpointnewrelic:licensekey: newreliclicensekeyname: newrelicnameverbose: true
http:addr: localhost:5000prefix: /my/nested/registry/host: https://myregistryaddress.org:5000secret: asecretforlocaldevelopmentrelativeurls: falsetls:certificate: /path/to/x509/publickey: /path/to/x509/privateclientcas:- /path/to/ca.pem- /path/to/another/ca.pemletsencrypt:cachefile: /path/to/cache-fileemail: emailused@letsencrypt.comdebug:addr: localhost:5001headers:X-Content-Type-Options: [nosniff]http2:disabled: false
notifications:endpoints:- name: alistenerdisabled: falseurl: https://my.listener.com/eventheaders: <http.Header>timeout: 500threshold: 5backoff: 1000ignoredmediatypes:- application/octet-stream
redis:addr: localhost:6379password: asecretdb: 0dialtimeout: 10msreadtimeout: 10mswritetimeout: 10mspool:maxidle: 16maxactive: 64idletimeout: 300s
health:storagedriver:enabled: trueinterval: 10sthreshold: 3file:- file: /path/to/checked/fileinterval: 10shttp:- uri: http://server.to.check/must/return/200headers:Authorization: [Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==]statuscode: 200timeout: 3sinterval: 10sthreshold: 3tcp:- addr: redis-server.domain.com:6379timeout: 3sinterval: 10sthreshold: 3
proxy:remoteurl: https://registry-1.docker.iousername: [username]password: [password]
compatibility:schema1:signingkeyfile: /etc/registry/key.json
validation:enabled: truemanifests:urls:allow:- ^https?://([^/]+\.)*example\.com/deny:- ^https?://www\.example\.com/

在某些情况下,配置选项是可选的,但它包含标记为必需的子选项。在这些情况下,可以忽略父选项及其所有子选项。但是,如果使用了父选项,则必须包括所有必选的子选项。

4. version

version: 0.1

version 选项是必需的。它指定配置的版本。它必须是顶级域,以便在解析配置文件的其余部分之前进行一致的版本检查。

5. log

日志子部分配置日志记录系统的行为。日志记录系统将所有内容输出到标准输出。可以使用此配置部分调整粒度和格式。

log:accesslog:disabled: truelevel: debugformatter: textfields:service: registryenvironment: staging
参数 是否必须 描述
level 设置记出日志的灵敏度。允许的值有 error,warn,info 和 debug。默认是 info。
formatter 选择日志输出的格式。该格式主要影响对日志行的键控属性进行编码的方式。选项是 text,json 和 logstash。默认值是 text。
fields 字段名称到值的映射。这些被添加到上下文的每个日志行。这对于在其他系统中混合后识别日志消息源很有用。

5.1 accesslog

accesslog:disabled: true

log 内,accesslog 配置访问日志记录系统的行为。默认情况下,访问日志记录系统以组合日志格式输出到标准输出。可以通过将布尔标志 disabled 设置为 true 来禁用访问日志记录。

6. hooks

hooks:- type: mail
    levels:- panic
    options:smtp:addr: smtp.sendhost.com:25username: sendernamepassword: passwordinsecure: truefrom: name@sendhost.comto:- name@receivehost.com

hooks 子部分配置日志 hooks 的行为。例如,该小节包含一个序列处理程序,可以使用它来发送邮件。请参阅 loglevel 以配置打印的消息级别。

7. loglevel

废弃:请使用 log。

loglevel: debug

允许值有 error, warn, info 和 debug。默认是 info。

8. storage

storage:filesystem:rootdirectory: /var/lib/registryazure:accountname: accountnameaccountkey: base64encodedaccountkeycontainer: containernamegcs:bucket: bucketnamekeyfile: /path/to/keyfilerootdirectory: /gcs/object/name/prefixs3:accesskey: awsaccesskeysecretkey: awssecretkeyregion: us-west-1regionendpoint: http://myobjects.localbucket: bucketnameencrypt: truekeyid: mykeyidsecure: truev4auth: truechunksize: 5242880multipartcopychunksize: 33554432multipartcopymaxconcurrency: 100multipartcopythresholdsize: 33554432rootdirectory: /s3/object/name/prefixswift:username: usernamepassword: passwordauthurl: https://storage.myprovider.com/auth/v1.0 or https://storage.myprovider.com/v2.0 or https://storage.myprovider.com/v3/authtenant: tenantnametenantid: tenantiddomain: domain name for Openstack Identity v3 APIdomainid: domain id for Openstack Identity v3 APIinsecureskipverify: trueregion: frcontainer: containernamerootdirectory: /swift/object/name/prefixoss:accesskeyid: accesskeyidaccesskeysecret: accesskeysecretregion: OSS region nameendpoint: optional endpointsinternal: optional internal endpointbucket: OSS bucketencrypt: optional data encryption settingsecure: optional ssl settingchunksize: optional size valyerootdirectory: optional root directoryinmemory:delete:enabled: falsecache:blobdescriptor: inmemorymaintenance:uploadpurging:enabled: trueage: 168hinterval: 24hdryrun: falsereadonly:enabled: falseredirect:disable: false

存储选项是必需的,它定义了哪个存储后端正在使用中。必须完全配置一个后端。如果配置了多个存储后端,则 registry 会返回错误。可以选择以下任何后端存储驱动程序:

存储驱动程序 描述
filesystem 使用本地磁盘来存储 registry 文件。它非常适合开发,可能适用于一些小规模生产应用。请参阅 驱动程序的参考文档。
azure 使用 Microsoft Azure Blob Storage。参考 驱动程序的手册。
gcs 使用 Google Cloud Storage。参考 驱动程序的手册。
s3 使用 Amazon Simple Storage Service (S3) 和 compatible Storage Services。参考 驱动程序的手册。
swift 使用 Openstack Swift object storage。参考 驱动程序的手册。
oss 使用 Aliyun OSS for object storage。参考 驱动程序的手册。

仅用于测试的话,可以使用 inmemory 存储驱动程序。如果你想从易失性存储器运行 registry,请在 ramdisk 上使用 文件系统驱动程序。

如果在 Windows 上部署 registry,则不推荐从主机挂载 Windows 卷。相反,可以使用 S3 或 Azure 支持数据存储。如果确实使用 Windows 卷,则到安装点的 PATH 长度必须在 MAX_PATH 限制(通常为255个字符)内,否则会发生此错误:

mkdir /XXX protocol error and your registry will not function properly.

8.1 maintenance

目前,上传清除和只读模式是唯一可用的 maintenance(维护)功能。

8.2 uploadpurging

上传清除(uploadpurging)是一个后台进程,可以定期从 registry 的上传目录中删除孤立的文件。上传清除默认情况下处于启用状态。要配置上传目录清除,必须设置以下参数。

参数 是否必须 描述
enabled 默认 true。设置为 true 则开启上传清除。
age 默认 168 小时,即 1 周。上传目录大于这个时间后,删除上传目录。interval
dryrun dryrun 设置为 true 以获取要删除的目录的摘要。默认为 false。

注意:ageinterval 是包含具有可选的分数和单位后缀的数字的字符串。例如:45m,2h10m,168h。

8.3 readonly

如果将 maintenance 下的 readonly 部分的 enabled 设置为 true,则不允许客户端写入 registry。此模式对于临时阻止写入后端存储非常有用,此时可以运行垃圾回收。在运行垃圾回收之前,registry 应该在 readonlyenabled 设置为 true 的情况下重新启动。垃圾收集过程完成后,registry 可能会重新启动,这次只能从配置中只读取(或设置为 false)。

8.4 delete

使用 delete 可以通过摘要删除镜像的 blob 和清单(Use the delete structure to enable the deletion of image blobs and manifests by digest)。默认是 false,但可以通过在配置文件中写入以下内容来启用它:

delete:enabled: true

8.5 cache

使用 cache 来启用在存储后端访问的数据的缓存。目前,唯一可用的缓存提供对层元数据(layer metadata)的快速访问,层元数据使用 blobdescriptor 字段(如果已配置)。

可以将 blobdescriptor 字段设置为 redisinmemory。如果设置为 redis,则 Redis 池会缓存层元数据。如果设置为 inmemory,则内存映射会缓存层元数据。

注意:以前,blobdescriptor 被称为 layerinfo。虽然这是一样的,但 layerinfo 已被弃用。

8.6 redirect

redirect 子部分提供了用于管理来自内容后端的重定向的配置。对于支持它的后端,默认情况下启用重定向。在某些部署方案中,你可能决定将所有数据路由到 registry,而不是重定向到后端。当使用不共存的后端或者当 registry 实例积极缓存时,这可能会更有效(This may be more efficient when using a backend that is not co-located or when a registry instance is aggressively caching)。

要禁用重定向,请在 redirect 下添加一个 disable 标志,将其设置为 true:

redirect:disable: true

9. auth

auth:silly:realm: silly-realmservice: silly-servicetoken:realm: token-realmservice: token-serviceissuer: registry-token-issuerrootcertbundle: /root/certs/bundlehtpasswd:realm: basic-realmpath: /path/to/htpasswd

auth 选项是可选的。可能的 auth provider 包括:

  • silly
  • token
  • htpasswd

只能配置一个 auth provider 。

9.1 silly

silly 身份验证程序只适合开发。它只是检查 HTTP 请求中是否存在 Authorization 标头。它不检查 header 的值。如果 header 不存在,那么 silly 认证返回 challenge 响应,回应拒绝访问的 realm,service 和 scope。

以下值用于配置响应:

参数 是否必须 描述
realm 注册表服务器进行身份验证的 realm (领域)。
service 进行身份验证的服务。

9.2 token

基于 token 令牌的身份验证允许你将身份验证系统与 registry 分离。这是一个高度安全的认证范例。

参数 是否必须 描述
realm 注册表服务器进行身份验证的 realm (领域)。
service 进行身份验证的服务。
issuer token 令牌发行者的名称。发行者将其插入令牌,因此它必须匹配为发行者配置的值(The issuer inserts this into the token so it must match the value configured for the issuer)。
rootcertbundle 根证书包的绝对路径。该捆绑包(bundle)包含用于签署认证令牌的证书的公共部分。

有关基于令牌的认证配置的更多信息,请参阅 规范。

9.3 htpasswd

支持的 htpasswd 认证允许使用 Apache htpasswd 文件 配置基本认证。唯一支持的密码格式是 bcrypt。其他散列类型的条目将被忽略。htpasswd文件在启动时加载一次。如果文件无效,registry 将显示错误并且不会启动。

警告:由于基本身份验证将密码作为 HTTP header 的一部分发送,因此只能使用配置了 TLS 的 htpasswd 身份验证方案。

参数 是否必须 描述
realm 注册表服务器进行身份验证的 realm (领域)。
path 启动时加载的 htpasswd 文件的路径。

10. middleware

middleware 部分是可选的。使用此选项在指定的 hook point 处注入中间件。每个中间件都必须实现与它所包装的对象相同的接口。例如,registry 中间件必须实现 distribution.Namespace 接口,repository 中间件必须实现distribution.Repository,而 storage 中间件必须实现 driver.StorageDriver

这是 cloudfront 中间件(存储中间件)的示例配置:

middleware:registry:- name: ARegistryMiddleware
      options:foo: barrepository:- name: ARepositoryMiddleware
      options:foo: barstorage:- name: cloudfront
      options:baseurl: https://my.cloudfronted.domain.com/privatekey: /path/to/pemkeypairid: cloudfrontkeypairidduration: 3000s

每个中间件条目都有 nameoptions 条目。该 name 必须与中间件 registry 自身的名称相对应。options 字段是一个映射,用于详细说明初始化中间件所需的自定义配置。它被视为一个 map[string]interface{}。因此,它支持所需的任何有趣的结构,将其留给中间件初始化函数以最好地确定如何处理选项的特定解释(As such, it supports any interesting structures desired, leaving it up to the middleware initialization function to best determine how to handle the specific interpretation of the options.)。

10.1 cloudfront

参数 是否必须 描述
baseurl SCHEME://HOST[/PATH],Cloudfront 提供服务的 url。
privatekey Cloudfront 的私钥,由 AWS 提供。
keypairid 由 AWS 提供的 key pair ID。
duration Cloudfront 会话持续时间,由整数和单位组成。有效时间单位是ns,us(或μs),ms,s,m 或 h。例如,3000s 是有效的,但 3000 s 不是。如果不指定持续时间或者指定一个没有时间单位的整数,则持续时间默认为20m(20分钟)。

10.2 redirect

可以使用重定向存储中间件为 S3 存储驱动程序存储的层的代理位置指定自定义 URL(You can use the redirect storage middleware to specify a custom URL to a location of a proxy for the layer stored by the S3 storage driver)。

参数 是否必须 描述
baseurl SCHEME://HOST,层的保存位置。例如,https://example.com:5443

11. reporting

reporting:bugsnag:apikey: bugsnagapikeyreleasestage: bugsnagreleasestageendpoint: bugsnagendpointnewrelic:licensekey: newreliclicensekeyname: newrelicnameverbose: true

reporting 选项是可选的,并配置错误和指标报告工具。目前只支持两种服务:

  • Bugsnag
  • New Relic

有效的配置可以同时包含这两个服务。

11.1 bugsnag

参数 是否必须 描述
apikey 由 Bugsnag 提供的 API Key。
releasestage 跟踪部署 registry 的位置,使用像 productionstagingdevelopment 这样的字符串。
endpoint 企业 Bugsnag 端点(The enterprise Bugsnag endpoint)。

11.2 newrelic

参数 是否必须 描述
licensekey
name
verbose

12. http

http:addr: localhost:5000net: tcpprefix: /my/nested/registry/host: https://myregistryaddress.org:5000secret: asecretforlocaldevelopmentrelativeurls: falsetls:certificate: /path/to/x509/publickey: /path/to/x509/privateclientcas:- /path/to/ca.pem- /path/to/another/ca.pemletsencrypt:cachefile: /path/to/cache-fileemail: emailused@letsencrypt.comdebug:addr: localhost:5001headers:X-Content-Type-Options: [nosniff]http2:disabled: false

http 选项详细配置了 registry 所在的 HTTP 服务器。

参数 是否必须 描述
addr 服务器应该接受连接的地址。格式取决于网络类型(参考 net 选项)。对于 TCP 套接字使用 HOST:PORT,对于 UNIX 套接字使用 FILE
net 用于创建侦听套接字的网络。可以使用 unixtcp
prefix 如果服务器未在根路径上运行,用这个参数设置前缀的值。根路径是 v2 之前的部分。它需要前斜杠和后斜线,例如 /path/
host registry 的外部可达地址的完全限定 URL。如果存在,则在创建生成的URL时使用(A fully-qualified URL for an externally-reachable address for the registry. If present, it is used when creating generated URLs)。否则,这些 URL 从客户端请求派生。
secret 用于签署状态的随机数据,可与客户端一起存储以防止篡改。对于生产环境,应该使用密码安全的随机生成器生成随机数据。如果省略 secret,registry 将在启动时自动生成一个 secret。如果要在负载均衡器后面建立一个 registry 集群,必须确保所有 registry 的 secret 都一样。
relativeurls 如果为 true,则 registry 将返回 Location header 中的相对 URL。客户端负责解析正确的 URL。该选项与 Docker 1.7 及更早版本不兼容。

12.1 tls

http 中的 tls 选项是可选的,用于配置服务器的 TLS。如果在 registry 所在主机上已经运行了一个 web 服务器,则最好为 web 服务器配置 TLS 并代理到 registry 服务器的连接。

参数 是否必须 描述
certificate x509 证书文件(certificate file)的绝对路径。
key x509 私钥文件(private key file)的绝对路径。
clientcas x509 CA 文件的绝对路径的数组。

12.2 letsencrypt

tls 中的 letsencrypt 是可选的,用于配置由 Let’s Encrypt 提供的 TLS 证书。

注意:使用 Let’s Encrypt 时,请确保端口 443 可从外部访问。registry 默认侦听端口 5000。如果将 registry 作为容器运行,请考虑将标志 -p 443:5000 添加到 docker run 命令或在云配置中使用类似的设置。

参数 是否必须 描述
cachefile Let’s Encrypt 客户端可以缓存数据的绝对路径。
email 用于注册 Let’s Encrypt 的电子邮件地址。

12.3 debug

debug 选项是可选的,用于配置可以帮助诊断问题的调试服务器。调试端点可用于监控 registry 指标和运行状况以及性能分析。敏感信息可能通过调试端点提供。请确保访问调试端点的权限在生产环境中被锁定。

debug 部分采用一个必需的 addr 参数,该参数指定调试服务器应该接受来自哪个 HOST:PORT 的连接。

12.4 headers

headers 选项是可选的,用来指定 HTTP 服务器应该包含在响应中的 header。这可以用于安全头如 Strict-Transport-Security

headers 选项应该包含每个 header 包含的选项,其中参数名称是 header 名称,参数值是 header 的有效负载值列表。(The headers option should contain an option for each header to include, where the parameter name is the header’s name, and the parameter value a list of the header’s payload values)

推荐包括 X-Content-Type-Options: [nosniff],以便浏览器不会将内容解释为 HTML,如果它们被指示从 registry 中加载页面。该头文件包含在示例配置文件中。

12.5 http2

http 中的 http2 选项是可选的,用于控制 registry 的 HTTP2 设置。

参数 是否必须 描述
disabled 如果是 true,则关闭 HTTP2 支持。

13. notifications

notifications:endpoints:- name: alistenerdisabled: falseurl: https://my.listener.com/eventheaders: <http.Header>timeout: 500threshold: 5backoff: 1000ignoredmediatypes:- application/octet-stream

notifications 选项是可选的,目前可能包含一个选项 endpoints

13.1 endpoints

endpoints 结构包含一个命名过的服务(URL)的列表,可以接受事件通知。

参数 是否必须 描述
name 可读的服务名
disabled 如果是 true,禁止向服务发送通知。
url 事件发布到该 URL。
headers 要添加到每个请求的静态 header 列表。每个 header 的名称是 header 下的关键字,每个值都是该标题名称的有效负载列表(Each header’s name is a key beneath headers, and each value is a list of payloads for that header name)。值必须始终为列表。
timeout HTTP 超时的值。表示时间的正整数和可选的单位后缀,可以是 ns,us,ms,s,m 或 h。如果省略时间单位,则使用 ns。
threshold 一个整数,指定在退出故障之前等待多久。
backoff 系统在发生故障后重试之前需要等待多久。表示时间单位的正整数和可选后缀,可以是 ns,us,ms,s,m 或 h。如果省略时间单位,则使用ns。
ignoredmediatypes 要忽略的目标媒体类型列表。这些目标媒体类型的事件不会发布到端点。

14. redis

redis:addr: localhost:6379password: asecretdb: 0dialtimeout: 10msreadtimeout: 10mswritetimeout: 10mspool:maxidle: 16maxactive: 64idletimeout: 300s

声明构建 redis 连接的参数。registry 实例可以将 Redis 实例用于多个应用程序。目前,它缓存有关不可变 blob 的信息。大多数 redis 选项控制 registry 如何连接到 redis 实例。要控制 pool 的行为可以参考下一小节 pool。

应该使用 allkeys-lru 策略(allkeys-lru eviction policy)来配置 Redis,因为 registry 不会在密钥上设置过期值。

参数 是否必须 描述
addr Redis 实例的地址(主机和端口)。
password 用于 Redis 实例认证的密码。
db 用于每个连接的数据库名。
dialtimeout 连接到 Redis 实例的超时时间。
readtimeout 从 Redis 实例的读操作超时时间。
writetimeout 向 Redis 实例的写操作超时时间。

14.1 pool

pool:maxidle: 16maxactive: 64idletimeout: 300s

这些设置用于配置 Redis 连接池的表现。

超时 是否必须 描述
maxidle 连接池中的最大空闲连接数。
maxactive 在阻止连接请求之前可以打开的最大连接数。
idletimeout 关闭不活动的连接之前的等待时间。

15. health

health:storagedriver:enabled: trueinterval: 10sthreshold: 3file:- file: /path/to/checked/fileinterval: 10shttp:- uri: http://server.to.check/must/return/200headers:Authorization: [Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==]statuscode: 200timeout: 3sinterval: 10sthreshold: 3tcp:- addr: redis-server.domain.com:6379timeout: 3sinterval: 10sthreshold: 3

health 选项是可选的,包含用于定期对存储驱动程序后端存储进行健康状况检查的首选项,以及对本地文件,HTTP URI 和 TCP 服务器的定期检查选项。如果启用了调试 HTTP 服务器,则可以在调试 HTTP 服务器上的 /debug/health 端点上使用健康检查的结果(请参阅 http 部分)。

15.1 storagedriver

storagedriver 结构包含用于对配置的存储驱动程序的后端存储进行运行状况检查的选项。只有在 enabled 设置为 true 时,健康检查才会激活。

超时 是否必须 描述
enabled 设置为 true 以启用存储驱动程序的状况检查,设置为 false 则禁用。
interval 存储驱动程序运行两次状况检查之间需要等待多长时间。一个正整数和一个可选的时间单位后缀。后缀是 ns,us,ms,s,m 或 h。如果该值被省略,则默认为 10 秒。如果指定了一个值但省略了后缀,则该值将被解释为一个纳秒数。
threshold 正整数,表示在状态标记为不健康之前必须失败的检查次数。如果没有指定,则一次故障就会使标志变为不健康状态。

15.2 file

file 结构包括一个要定期检查文件是否存在的路径列表。如果文件存在于给定路径中,则运行状况检查将失败。可以使用此机制通过创建文件来使 registry 脱离轮换(You can use this mechanism to bring a registry out of rotation by creating a file)。

参数 是否必须 描述
file 在这个路径上检查文件是否存在。
interval 重复检查的间隔时间。一个正整数和一个可选的时间单位后缀。后缀是 ns,us,ms,s,m 或 h 中的一个。如果该值被省略,则默认为 10 秒。

15.3 http

http 结构包含一个 HTTP URI 列表,用于定期检查 HEAD 请求。如果 HEAD 请求未完成或返回非预期状态码,则状况检查将失败。

参数 是否必须 描述
uri 要检查的 URI。
headers 要添加到每个请求的静态 header。每个 header 的名称是 header 下的关键字,每个值都是该 header 名称的有效负载列表(Each header’s name is a key beneath headers, and each value is a list of payloads for that header name)。值必须始终为列表。
statuscode 来自 HTTP URI 的预期状态码。默认为 200。
timeout 在 HTTP 请求超时之前等多久。一个正整数和一个可选的时间单位后缀。后缀是 ns,us,ms,s,m 或 h。如果指定了一个值但省略了后缀,则该值将被解释为一个纳秒数。
interval 两次检查之间的间隔。一个正整数和一个可选的时间单位后缀。后缀是 ns,us,ms,s,m 或 h。如果该值被省略,则默认为 10 秒。如果指定了一个值但省略了后缀,则该值将被解释为一个纳秒数。
threshold 在状态标记为不健康之前失败检查必须达到的次数。如果未指定此字段,则一次故障就会将状态标记为不健康。

15.4 tcp

tcp 结构包含一个 TCP 地址列表,用于定期使用 TCP 连接进行检查。地址必须包含端口号。如果连接尝试失败,健康检查将失败。

参数 是否必须 描述
addr 要连接到的 TCP 地址和端口。
timeout TCP 连接超时时间。一个正整数和一个可选的时间单位后缀。后缀是 ns,us,ms,s,m 或 h。如果指定了一个值但省略了后缀,则该值将被解释为一个纳秒数。
interval 两次检查之间的间隔。一个正整数和一个可选的时间单位后缀。后缀是 ns,us,ms,s,m 或 h。如果该值被省略,则默认为 10 秒。如果指定了一个值但省略了后缀,则该值将被解释为一个纳秒数。
threshold 在状态标记为不健康之前失败检查必须达到的次数。如果未指定此字段,则一次故障就会将状态标记为不健康。

16. proxy

proxy:remoteurl: https://registry-1.docker.iousername: [username]password: [password]

proxy 结构允许将 registry 配置为 Docker Hub 的直通缓存(a pull-through cache)。更多信息请参阅 镜像。不支持向配置为直通式高速缓存的 registry 的 push 操作。

参数 是否必须 描述
remoteurl Docker Hub 上的仓库的 URL。
username 注册到可访问仓库的 Docker Hub 的用户名。
password 用于使用 username 中指定的用户名对 Docker Hub 进行身份验证的密码。

要启用私人仓库(例如 batman/robin),请指定用户名(例如 batman)和该用户名的密码。

注意:这些私人仓库存储在代理缓存的存储中。采取适当措施保护对代理缓存的访问。

17. compatibility

compatibility:schema1:signingkeyfile: /etc/registry/key.json

使用 compatibility 结构来配置处理旧的和弃用的功能。每个小节都定义了这种具有可配置行为的功能。

17.1 schema1

参数 是否必须 描述
signingkeyfile 用于向 schema1 清单添加签名的签名私钥。如果未提供签名密钥,则在 registry 启动时会生成新的 ECDSA 密钥。

18. validation

validation:enabled: truemanifests:urls:allow:- ^https?://([^/]+\.)*example\.com/
      deny:- ^https?://www\.example\.com/

18.1 enabled

使用 enabled 标志启用 validation 部分中的其他选项。它们默认是禁用的。

18.2 manifests

使用 manifest 子部分来配置清单验证。

URLS

allowdeny 选项每个都是限制推送清单中的URL的 正则表达式列表。

如果没有设置 allow,向清单中包含的 URL 进行 push 操作会失败。

如果设置了 allow,则只有在所有 URL 匹配其中一个允许的正则表达式并且以下情况之一成立时才 push manifest:

  1. 没设置 deny
  2. deny 设置了但是 manifest 清单中没有 URL 匹配 deny 正则表达式

19. 示例:部署配置

以下示例可以用于本地配置:

version: 0.1
log:level: debug
storage:filesystem:rootdirectory: /var/lib/registry
http:addr: localhost:5000secret: asecretforlocaldevelopmentdebug:addr: localhost:5001

本示例将 registry 实例配置为在端口 5000 上运行,绑定到 localhost,并启用调试服务器。registry 数据存储在 /var/lib/registry 目录中。日志记录被设置为调试模式,这是最详细的。

有关其他简单配置,请参阅 config-example.yml。这两个例子通常对本地开发很有用。

20. 示例:中间件配置

本示例将 Amazon Cloudfront 配置为注册表中的存储中间件。中间件允许 registry 通过内容交付网络(CDN)提供服务。这减少了对存储层的请求。

Cloudfront需要S3存储驱动程序。

这是YAML中的配置:
Cloudfront requires the S3 storage driver.

This is the configuration expressed in YAML:

middleware:storage:- name: cloudfrontdisabled: falseoptions:baseurl: http://d111111abcdef8.cloudfront.netprivatekey: /path/to/asecret.pemkeypairid: asecretduration: 60

有关配置选项的更多信息,请参阅 Cloudfront 的配置参考。

注意:Cloudfront 密钥与其他 AWS 密钥分开存在。有关更多信息,请参阅 AWS 凭证上的文档。

Docker 开源项目之 registry - 配置 registry相关推荐

  1. Docker 开源项目之 registry - 部署 registry (注册表)服务器

    原文地址 在部署 registry 之前需要现在主机上安装 Docker.registry 实际上就是运行在 Docker 中的 registry 镜像的实例. 本主题提供关于部署和配置 regist ...

  2. ROS学习笔记——基于Prometheus无人机开源项目仿真环境配置

    本笔记基于ubuntu18.04版本,配置基于Prometheus无人机开源项目仿真环境. 需要事先在电脑上安装了ROS,Mavros功能包,其余可参考Amov教程,                  ...

  3. 多台树莓派配置自组织网络,batman-adv开源项目具体配置过程

    博主有幸接触到自组织网络这个batman-adv开源项目,并通过树莓派3b硬件实验了自组织网络,简单介绍自组织网络的概念 简答介绍自组织网络的概念(来自百度) 移动自组织(Ad Hoc)网络是一种多跳 ...

  4. 如何配置自己的开源项目,支持使用CocoaPods

    目前我们越来越多的使用CocoaPods管理项目中使用到的第三方库,通过CocoaPods,我们可以单独的管理每一个第三方库,而不需要做太多配置,这种方便.高效的方式,已经成为"热门的开源项 ...

  5. Github实用Android开源项目推荐(一)

    1.Android平台上拍照/录像,图片/视频选择,编辑和压缩的一站式解决方案. Github链接: https://github.com/sucese/phoenix 2.Android 标题栏框架 ...

  6. docker 启动镜像_Docker学以致用,开源项目和云服务,是最好的学习资源

    1. Docker简介 2. Docker常用命令 3. Dockerfile镜像创建命令 4. Docker镜像自动构建 5. docker-compose.yml资源编排文件 6. Docker ...

  7. 「实战篇」开源项目docker化运维部署-前端java部署(八)

    本节主要说说前端的部署需要注意的点,本身renren-fast这个项目就是通过nodejs来进行开发的,nodejs编译后生成html,css,img所以,咱们不用在容器直接用nginx就可以访问静态 ...

  8. 使用Docker部署GitLab、Nexus、Registry私服

    使用Docker搭建GitLab.Nexus.Registry 最佳建议,一个服务器部署一个相应服务,如果服务器够强大,就可忽视忽视. GitLab的部署 下载镜像 GitLab社区中文版镜像地址 $ ...

  9. 「实战篇」开源项目docker化运维部署-后端java部署(七)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:「实战篇」开源项目docker化运维部署-后端java部署(七) 本节主要说说后端的部署需要注意的点,本身renren-fas ...

最新文章

  1. USB学习5---android usb驱动源代码目录说明
  2. Rearrange an array of positive and negative integers
  3. VC++6.0中内存泄漏检测 转
  4. 《Spring Cloud》学习(一) 服务治理!
  5. 凸优化有关的数值线性代数知识一:矩阵结构与算法复杂性
  6. windows驱动安装卸载的实用小工具-InstDrv.exe
  7. Linux的使用_尚硅谷视频学习笔记
  8. Mergely – 免费的在线文本对比
  9. python初学入门教程_初学python编程入门教程
  10. Photoshop CC 2018安装破解
  11. Win11新Bug任务栏图标不显示的解决方法
  12. 我们通常所说的利率是指_我们通常所说的利率是指()。 A.市场利率B.名义利率C.实际利率D.固定利率...
  13. 蓝牙相关Profiles
  14. Ubuntu18.04和Win10共享文件夹
  15. Linux开启root用户
  16. TweenMax.js大熊猫吃面条动画
  17. 翻转课堂教学感受调查
  18. 【LeetCode】309. Best Time to Buy and Sell Stock with Cooldown 最佳买卖股票时机含冷冻期(Medium)(JAVA)
  19. anyRTC2020年 年终总结
  20. 增强学习系列之(二):实现一个简单的增强学习的例子

热门文章

  1. vbs整人代码蓝屏_愚人节必备,教你制作整人神器,用代码实现计算机蓝屏
  2. PID--位置型PID和增量式PID比较
  3. 服务器宕机维护视频,怎么防止服务器宕机
  4. 【DIY Arduino基于RC气垫船】
  5. 概率论第一章 - 概率论的基本概念
  6. cmake之 第三方库始终报错 /usr/bin/ld: cannot find -lxxx?
  7. Object 类的强制转换
  8. Xpath的使用(详细教学)
  9. oracle sum包含空值,实验 oracle sum null值相关
  10. GIZA++词对齐运行实验