配置注册表

预计阅读时间:35分钟

注册表配置基于YAML文件,详细信息如下。尽管开箱即用了默认值,但在将系统投入生产之前,您应该进行详尽的检查。

覆盖特定的配置选项

在从正式映像运行注册表的典型设置中,您可以通过将-e参数传递给docker run节或使用ENV 指令从Dockerfile内,从环境中指定配置变量。

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

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

要覆盖此值,请设置如下环境变量:

REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/somewhere

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

注意:使用环境变量创建一个基本配置文件,可以将其配置为调整各个值。不建议使用环境变量覆盖配置节。

覆盖整个配置文件

如果默认配置不是您使用的可靠依据,或者在覆盖环境中的密钥时遇到问题,则可以通过将其作为卷安装在容器中来指定备用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文件 作为起点。

配置选项列表

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

version: 0.1
log:
  accesslog:
    disabled: true
  level: debug
  formatter: text
  fields:
    service: registry
    environment: staging
  hooks:
    - type: mail
      disabled: true
      levels:
        - panic
      options:
        smtp:
          addr: mail.example.com:25
          username: mailuser
          password: password
          insecure: true
        from: sender@example.com
        to:
          - errors@example.com
loglevel: debug # deprecated: use "log"
storage:
  filesystem:
    rootdirectory: /var/lib/registry
    maxthreads: 100
  azure:
    accountname: accountname
    accountkey: base64encodedaccountkey
    container: containername
  gcs:
    bucket: bucketname
    keyfile: /path/to/keyfile
    credentials:
      type: service_account
      project_id: project_id_string
      private_key_id: private_key_id_string
      private_key: private_key_string
      client_email: client@example.com
      client_id: client_id_string
      auth_uri: http://example.com/auth_uri
      token_uri: http://example.com/token_uri
      auth_provider_x509_cert_url: http://example.com/provider_cert_url
      client_x509_cert_url: http://example.com/client_cert_url
    rootdirectory: /gcs/object/name/prefix
    chunksize: 5242880
  s3:
    accesskey: awsaccesskey
    secretkey: awssecretkey
    region: us-west-1
    regionendpoint: http://myobjects.local
    bucket: bucketname
    encrypt: true
    keyid: mykeyid
    secure: true
    v4auth: true
    chunksize: 5242880
    multipartcopychunksize: 33554432
    multipartcopymaxconcurrency: 100
    multipartcopythresholdsize: 33554432
    rootdirectory: /s3/object/name/prefix
  swift:
    username: username
    password: password
    authurl: https://storage.myprovider.com/auth/v1.0 or https://storage.myprovider.com/v2.0 or https://storage.myprovider.com/v3/auth
    tenant: tenantname
    tenantid: tenantid
    domain: domain name for Openstack Identity v3 API
    domainid: domain id for Openstack Identity v3 API
    insecureskipverify: true
    region: fr
    container: containername
    rootdirectory: /swift/object/name/prefix
  oss:
    accesskeyid: accesskeyid
    accesskeysecret: accesskeysecret
    region: OSS region name
    endpoint: optional endpoints
    internal: optional internal endpoint
    bucket: OSS bucket
    encrypt: optional data encryption setting
    secure: optional ssl setting
    chunksize: optional size valye
    rootdirectory: optional root directory
  inmemory:  # This driver takes no parameters
  delete:
    enabled: false
  redirect:
    disable: false
  cache:
    blobdescriptor: redis
  maintenance:
    uploadpurging:
      enabled: true
      age: 168h
      interval: 24h
      dryrun: false
    readonly:
      enabled: false
auth:
  silly:
    realm: silly-realm
    service: silly-service
  token:
    autoredirect: true
    realm: token-realm
    service: token-service
    issuer: registry-token-issuer
    rootcertbundle: /root/certs/bundle
  htpasswd:
    realm: basic-realm
    path: /path/to/htpasswd
middleware:
  registry:
    - name: ARegistryMiddleware
      options:
        foo: bar
  repository:
    - name: ARepositoryMiddleware
      options:
        foo: bar
  storage:
    - name: cloudfront
      options:
        baseurl: https://my.cloudfronted.domain.com/
        privatekey: /path/to/pem
        keypairid: cloudfrontkeypairid
        duration: 3000s
        ipfilteredby: awsregion
        awsregion: us-east-1, use-east-2
        updatefrenquency: 12h
        iprangesurl: https://ip-ranges.amazonaws.com/ip-ranges.json
  storage:
    - name: redirect
      options:
        baseurl: https://example.com/
reporting:
  bugsnag:
    apikey: bugsnagapikey
    releasestage: bugsnagreleasestage
    endpoint: bugsnagendpoint
  newrelic:
    licensekey: newreliclicensekey
    name: newrelicname
    verbose: true
http:
  addr: localhost:5000
  prefix: /my/nested/registry/
  host: https://myregistryaddress.org:5000
  secret: asecretforlocaldevelopment
  relativeurls: false
  draintimeout: 60s
  tls:
    certificate: /path/to/x509/public
    key: /path/to/x509/private
    clientcas:
      - /path/to/ca.pem
      - /path/to/another/ca.pem
    letsencrypt:
      cachefile: /path/to/cache-file
      email: emailused@letsencrypt.com
      hosts: [myregistryaddress.org]
  debug:
    addr: localhost:5001
    prometheus:
      enabled: true
      path: /metrics
  headers:
    X-Content-Type-Options: [nosniff]
  http2:
    disabled: false
notifications:
  events:
    includereferences: true
  endpoints:
    - name: alistener
      disabled: false
      url: https://my.listener.com/event
      headers: <http.Header>
      timeout: 1s
      threshold: 10
      backoff: 1s
      ignoredmediatypes:
        - application/octet-stream
      ignore:
        mediatypes:
           - application/octet-stream
        actions:
           - pull
redis:
  addr: localhost:6379
  password: asecret
  db: 0
  dialtimeout: 10ms
  readtimeout: 10ms
  writetimeout: 10ms
  pool:
    maxidle: 16
    maxactive: 64
    idletimeout: 300s
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3
  file:
    - file: /path/to/checked/file
      interval: 10s
  http:
    - uri: http://server.to.check/must/return/200
      headers:
        Authorization: [Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==]
      statuscode: 200
      timeout: 3s
      interval: 10s
      threshold: 3
  tcp:
    - addr: redis-server.domain.com:6379
      timeout: 3s
      interval: 10s
      threshold: 3
proxy:
  remoteurl: https://registry-1.docker.io
  username: [username]
  password: [password]
compatibility:
  schema1:
    signingkeyfile: /etc/registry/key.json
    enabled: true
validation:
  manifests:
    urls:
      allow:
        - ^https?://([^/]+\.)*example\.com/
      deny:
        - ^https?://www\.example\.com/

在某些情况下,配置选项是可选的,但它包含标记为必需的子选项。在这种情况下,您可以省略其所有子项的父项。但是,如果包括父项,则还必须包括标记为required的所有子项。

version

version: 0.1

version选项是必需的。它指定配置的版本。预计它将保留为顶级字段,以允许在解析配置文件的其余部分之前进行一致的版本检查。

log

log小节配置日志记录系统的行为。日志记录系统将所有内容输出到stdout。您可以使用此配置部分来调整粒度和格式。

log:
  accesslog:
    disabled: true
  level: debug
  formatter: text
  fields:
    service: registry
    environment: staging
范围 必需的 描述
level 设置日志记录输出的灵敏度。允许值是errorwarninfo,和debug。默认值为info
formatter 这将选择日志输出的格式。该格式主要影响日志行的键控属性的编码方式。选项包括textjson,和logstash。默认值为text
fields 字段名称到值的映射。这些被添加到上下文的每个日志行。这对于在其他系统中混合后识别日志消息源很有用。

accesslog

accesslog:
  disabled: true

在中logaccesslog配置访问日志记录系统的行为。默认情况下,访问日志记录系统以“组合日志格式”输出到stdout 。访问日志记录可以通过布尔标志设置禁用disabledtrue

hooks

hooks:
  - type: mail
    levels:
      - panic
    options:
      smtp:
        addr: smtp.sendhost.com:25
        username: sendername
        password: password
        insecure: true
      from: name@sendhost.com
      to:
        - name@receivehost.com

hooks款配置日志记录挂钩的行为。例如,本小节包括一个序列处理程序,您可以使用它来发送邮件。请参阅以loglevel配置打印的消息级别。

loglevel

弃用:请改用日志

loglevel: debug

允许值是errorwarninfodebug。默认值为 info

storage

storage:
  filesystem:
    rootdirectory: /var/lib/registry
  azure:
    accountname: accountname
    accountkey: base64encodedaccountkey
    container: containername
  gcs:
    bucket: bucketname
    keyfile: /path/to/keyfile
    credentials:
      type: service_account
      project_id: project_id_string
      private_key_id: private_key_id_string
      private_key: private_key_string
      client_email: client@example.com
      client_id: client_id_string
      auth_uri: http://example.com/auth_uri
      token_uri: http://example.com/token_uri
      auth_provider_x509_cert_url: http://example.com/provider_cert_url
      client_x509_cert_url: http://example.com/client_cert_url
    rootdirectory: /gcs/object/name/prefix
  s3:
    accesskey: awsaccesskey
    secretkey: awssecretkey
    region: us-west-1
    regionendpoint: http://myobjects.local
    bucket: bucketname
    encrypt: true
    keyid: mykeyid
    secure: true
    v4auth: true
    chunksize: 5242880
    multipartcopychunksize: 33554432
    multipartcopymaxconcurrency: 100
    multipartcopythresholdsize: 33554432
    rootdirectory: /s3/object/name/prefix
  swift:
    username: username
    password: password
    authurl: https://storage.myprovider.com/auth/v1.0 or https://storage.myprovider.com/v2.0 or https://storage.myprovider.com/v3/auth
    tenant: tenantname
    tenantid: tenantid
    domain: domain name for Openstack Identity v3 API
    domainid: domain id for Openstack Identity v3 API
    insecureskipverify: true
    region: fr
    container: containername
    rootdirectory: /swift/object/name/prefix
  oss:
    accesskeyid: accesskeyid
    accesskeysecret: accesskeysecret
    region: OSS region name
    endpoint: optional endpoints
    internal: optional internal endpoint
    bucket: OSS bucket
    encrypt: optional data encryption setting
    secure: optional ssl setting
    chunksize: optional size valye
    rootdirectory: optional root directory
  inmemory:
  delete:
    enabled: false
  cache:
    blobdescriptor: inmemory
  maintenance:
    uploadpurging:
      enabled: true
      age: 168h
      interval: 24h
      dryrun: false
    readonly:
      enabled: false
  redirect:
    disable: false

storage选项是必需的,它定义了使用哪个存储后端。您必须仅配置一个后端。如果您配置更多,注册表将返回错误。您可以选择以下任何后端存储驱动程序:

存储驱动 描述
filesystem 使用本地磁盘存储注册表文件。它是开发的理想选择,可能适合某些小规模生产应用。请参阅驱动程序的参考文档
azure 使用Microsoft Azure Blob存储。请参阅驱动程序的参考文档
gcs 使用Google云端存储。请参阅驱动程序的参考文档
s3 使用Amazon Simple Storage Service(S3)和兼容的存储服务。请参阅驱动程序的参考文档
swift 使用Openstack Swift对象存储。请参阅驱动程序的参考文档
oss 使用Aliyun OSS进行对象存储。请参阅驱动程序的参考文档

仅用于测试,可以使用inmemory存储驱动程序。如果要从易失性内存中运行注册表,请使用 虚拟磁盘上的 filesystem驱动程序

如果要在Windows上部署注册表,则不建议从主机安装Windows卷。而是可以使用S3或Azure后备数据存储。如果您确实使用Windows卷,则PATH到安装点的长度必须在MAX_PATH限制范围内(通常为255个字符),否则会发生此错误:

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

maintenance

当前,只有上载清除和只读模式maintenance 可用。

uploadpurging

上载清除是一个后台过程,该过程会定期从注册表的上载目录中删除孤立的文件。默认情况下启用上载清除。要配置上载目录清除,必须设置以下参数。

范围 必需的 描述
enabled 是的 设置为true启用上载清除。默认为true
age 是的 超过此年龄的上传目录将被删除168h。默认为(1周)。
interval 是的 上载目录清除之间的时间间隔。默认为24h
dryrun 是的 设置dryruntrue获取要删除哪些目录的摘要。默认为false

注意ageinterval是包含带可选分数和单位后缀的数字的字符串。一些例子:45m2h10m168h

readonly

如果readonly部分下maintenance已经enabled设置true,客户端将不会被允许写入到注册表中。此模式对于临时阻止写入后端存储很有用,因此可以运行垃圾收集通道。在运行垃圾收集之前,应将readonlyenabled设置为true来重新启动注册表。垃圾收集通过完成后,注册表可能会重新启动,这次是readonly 从配置中删除(或设置为false)。

delete

使用该delete结构可以通过摘要删除图像斑点和清单。它的默认值为false,但是可以通过在配置文件中写入以下内容来启用它:

delete:
  enabled: true

cache

使用该cache结构启用对存储后端中访问的数据进行缓存。当前,唯一可用的缓存提供对层元数据的快速访问,blobdescriptor如果配置,该元数据将使用该字段。

您可以将blobdescriptorfield设置为redisinmemory。如果设置为redis,Redis池将缓存层元数据。如果设置为inmemory,则内存中的地图会缓存图层元数据。

注意:以前blobdescriptor称为layerinfo。尽管这些等效,layerinfo但已弃用。

redirect

redirect小节提供了用于管理从内容后端重定向的配置。对于支持它的后端,默认情况下启用重定向。在某些部署方案中,您可能决定通过注册表路由所有数据,而不是重定向到后端。当使用不在同一位置的后端或注册表实例正在积极缓存时,这可能会更有效率。

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

redirect:
  disable: true

auth

auth:
  silly:
    realm: silly-realm
    service: silly-service
  token:
    realm: token-realm
    service: token-service
    issuer: registry-token-issuer
    rootcertbundle: /root/certs/bundle
  htpasswd:
    realm: basic-realm
    path: /path/to/htpasswd

auth选项是可选的。可能的身份验证提供程序包括:

您只能配置一个身份验证提供程序。

silly

silly认证提供商是仅适用于开发。它只是检查AuthorizationHTTP请求中标头的存在。它不检查标题的值。如果标头不存在,则sillyauth将以质询响应进行响应,回显拒绝访问的领域,服务和范围。

以下值用于配置响应:

范围 必需的 描述
realm 是的 注册服务器在其中进行身份验证的领域。
service 是的 正在认证的服务。

token

基于令牌的身份验证使您可以将身份验证系统与注册表分离。这是一种已建立的具有高度安全性的认证范例。

范围 必需的 描述
realm 是的 注册服务器在其中进行身份验证的领域。
service 是的 正在认证的服务。
issuer 是的 令牌发行者的名称。发行者将其插入令牌,因此它必须与为发行者配置的值匹配。
rootcertbundle 是的 根证书捆绑包的绝对路径。该捆绑包包含用于签署身份验证令牌的证书的公共部分。
autoredirect 设置为时truerealm将使用请求的Host标头作为域和路径自动设置/auth/token/

有关基于令牌的身份验证配置的更多信息,请参见 规范

htpasswd

htpasswd的支持认证允许您使用的配置基本身份验证 的Apache的htpasswd文件。唯一受支持的密码格式为 bcrypt。具有其他哈希类型的条目将被忽略。该htpasswd文件在启动时被加载一次。如果文件无效,则注册表将显示错误,并且不会启动。

警告:如果htpasswd缺少该文件,则将创建该文件并为其设置默认用户和自动生成的密码。密码将被打印到标准输出。

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

范围 必需的 描述
realm 是的 注册服务器在其中进行身份验证的领域。
path 是的 htpasswd启动时要加载的文件的路径。

middleware

middleware结构是可选的。使用此选项可以在命名的挂钩点注入中间件。每个中间件必须实现与其包装的对象相同的接口。例如,注册中心中间件必须实现该 distribution.Namespace接口,而存储库中间件必须实现 distribution.Repository,而存储中间件必须实现 driver.StorageDriver

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

middleware:
  registry:
    - name: ARegistryMiddleware
      options:
        foo: bar
  repository:
    - name: ARepositoryMiddleware
      options:
        foo: bar
  storage:
    - name: cloudfront
      options:
        baseurl: https://my.cloudfronted.domain.com/
        privatekey: /path/to/pem
        keypairid: cloudfrontkeypairid
        duration: 3000s
        ipfilteredby: awsregion
        awsregion: us-east-1, use-east-2
        updatefrenquency: 12h
        iprangesurl: https://ip-ranges.amazonaws.com/ip-ranges.json

每个中间件条目都有nameoptions条目。在name必须与在其下的中间件自身注册名称。该 options字段是一个映射,详细描述了初始化中间件所需的自定义配置。它被视为map[string]interface{}。这样,它支持所需的任何有趣的结构,将其留给中间件初始化功能来最好地确定如何处理选项的特定解释。

cloudfront

范围 必需的 描述
baseurl 是的 SCHEME://HOST[/PATH]处的Cloudfront供应。
privatekey 是的 由AWS提供的Cloudfront的私钥。
keypairid 是的 AWS提供的密钥对ID。
duration Cloudfront会话持续时间的整数和单位。有效时间单位是nsus(或µs), ,mssmh。例如,3000s有效,但3000 s无效。如果您未指定aduration或指定不带时间单位的整数,则持续时间默认为20m(20分钟)。
ipfilteredby 具有以下值的字符串noneawsawsregion
awsregion 逗号分隔的AWS区域字符串,仅在ipfilteredbyis时可用awsregion。例如,us-east-1, us-west-2
updatefrenquency 默认情况下,更新AWS IP区域的频率: 12h
iprangesurl 该URL包含AWS IP范围信息,默认为: https://ip-ranges.amazonaws.com/ip-ranges.json

的值ipfilteredby可以是:

价值 描述
none 默认情况下,不按IP过滤
aws 来自AWS的IP直接转到S3
awsregion 来自某些AWS区域的IP直接与S3一起使用awsregion

redirect

您可以使用redirect存储中间件为S3存储驱动程序存储的图层的代理位置指定自定义URL。

范围 必需的 描述
baseurl 是的 SCHEME://HOST服务的层数。也可以包含端口。例如,https://example.com:5443

reporting

reporting:
  bugsnag:
    apikey: bugsnagapikey
    releasestage: bugsnagreleasestage
    endpoint: bugsnagendpoint
  newrelic:
    licensekey: newreliclicensekey
    name: newrelicname
    verbose: true

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

有效的配置可能同时包含两者。

bugsnag

范围 必需的 描述
apikey 是的 Bugsnag提供的API密钥。
releasestage 曲目而注册表部署,使用字符串像productionstagingdevelopment
endpoint 企业Bugsnag端点。

newrelic

范围 必需的 描述
licensekey 是的 New Relic提供的许可证密钥。
name 新的Relic应用程序名称。
verbose 设置为true在上启用New Relic调试输出stdout

http

http:
  addr: localhost:5000
  net: tcp
  prefix: /my/nested/registry/
  host: https://myregistryaddress.org:5000
  secret: asecretforlocaldevelopment
  relativeurls: false
  draintimeout: 60s
  tls:
    certificate: /path/to/x509/public
    key: /path/to/x509/private
    clientcas:
      - /path/to/ca.pem
      - /path/to/another/ca.pem
    minimumtls: tls1.2
    ciphersuites:
      - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
      - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
    letsencrypt:
      cachefile: /path/to/cache-file
      email: emailused@letsencrypt.com
      hosts: [myregistryaddress.org]
  debug:
    addr: localhost:5001
  headers:
    X-Content-Type-Options: [nosniff]
  http2:
    disabled: false

http选项详细说明了承载注册表的HTTP服务器的配置。

范围 必需的 描述
addr 是的 服务器应接受其连接的地址。形式取决于网络类型(请参阅net选项)。使用HOST:PORTTCP和FILE一个UNIX套接字。
net 用于创建侦听套接字的网络。已知的网络为unixtcp
prefix 如果服务器不在根路径上运行,请将其设置为前缀的值。根路径是之前的部分v2。它需要前面和后面的斜杠,例如example /path/
host 注册表的外部可访问地址的标准URL。如果存在,则在创建生成的URL时使用。否则,这些URL源自客户端请求。
secret 用于签署状态的随机数据,可以与客户端一起存储以防止篡改。对于生产环境,您应该使用加密安全的随机生成器生成随机数据。如果您忽略该机密,注册表将在启动时自动生成一个机密。如果要在负载均衡器后面构建注册表集群,则必须确保所有注册表的机密都是相同的。
relativeurls 如果为true,则注册表在Location标头中返回相对URL。客户端负责解析正确的URL。该选项与Docker 1.7及更早版本不兼容。
draintimeout 注册表收到SIGTERM信号后,在关闭HTTP连接之前需要等待的时间

tls

其中的tls结构http可选的。使用此配置服务器的TLS。如果您已经有一个Web服务器与注册表在同一主机上运行,​​则您可能希望在该Web服务器上配置TLS并与注册表服务器建立代理连接。

范围 必需的 描述
certificate 是的 x509证书文件的绝对路径。
key 是的 x509私钥文件的绝对路径。
clientcas x509 CA文件的绝对路径的数组。
minimumtls 允许的最低TLS版本(tls1.0,tls1.1,tls1.2,tls1.3)。默认为tls1.2
ciphersuites 允许使用密码套件。请参阅下面的允许值和默认值。

可用的密码套件:

  • TLS_RSA_WITH_RC4_128_SHA
  • TLS_RSA_WITH_3DES_EDE_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_RSA_WITH_RC4_128_SHA
  • TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
  • TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
  • TLS_AES_128_GCM_SHA256
  • TLS_AES_256_GCM_SHA384
  • TLS_CHACHA20_POLY1305_SHA256

默认密码套件:

  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
  • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_AES_128_GCM_SHA256
  • TLS_CHACHA20_POLY1305_SHA256
  • TLS_AES_256_GCM_SHA384

letsencrypt

其中的letsencrypt结构tls可选的。使用它来配置Let's Encrypt提供的TLS证书 。

注意:使用“让我们加密”时,请确保可在port上访问向外的地址443。注册表默认为监听port 5000。如果将注册表作为容器运行,请考虑将标志添加-p 443:5000docker run命令或在云配置中使用类似的设置。您还应该将hosts选项设置为对该注册表有效的主机名列表,以避免由于恶意客户端使用虚假的SNI主机名连接而试图获取随机主机名的证书。

范围 必需的 描述
cachefile 是的 Let's Encrypt代理可以在其中缓存数据的文件的绝对路径。
email 是的 用于向Let's Encrypt注册的电子邮件地址。
hosts “让我们加密”证书允许使用的主机名。

debug

debug选项是可选的。使用它来配置调试服务器,这有助于诊断问题。调试端点可用于监视注册表指标和运行状况以及性能分析。敏感信息可以通过调试端点获得。请确保在生产环境中已锁定对调试终结点的访问。

debug节采用单个必需addr参数,该参数指定HOST:PORT调试服务器应在其上接受连接的方式。

prometheus

prometheus选项定义是否启用了普罗米修斯度量标准,以及访问度量标准的路径。

范围 必需的 描述
enabled 设置true为启用prometheus服务器
path /metrics默认情况下,访问指标的路径

访问的指标的URL是HOST:PORT/path,其中HOST:PORT在定义addrdebug

headers

headers选项是可选的。使用它来指定HTTP服务器应在响应中包括的标头。可以用于安全标头,例如Strict-Transport-Security

headers选项应包含要包含的每个标头的选项,其中参数名称是标头的名称,参数值是标头的有效载荷值的列表。

X-Content-Type-Options: [nosniff]建议包括在内,这样,如果浏览器被定向为从注册表中加载页面,则不会将其解释为HTML。此标头包含在示例配置文件中。

http2

其中的http2结构http可选的。使用它来控制注册表的http2设置。

范围 必需的 描述
disabled 如果为true,则http2禁用支持。

notifications

notifications:
  events:
    includereferences: true
  endpoints:
    - name: alistener
      disabled: false
      url: https://my.listener.com/event
      headers: <http.Header>
      timeout: 1s
      threshold: 10
      backoff: 1s
      ignoredmediatypes:
        - application/octet-stream
      ignore:
        mediatypes:
           - application/octet-stream
        actions:
           - pull

通知选项是可选的,当前可能包含一个选项endpoints

endpoints

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

范围 必需的 描述
name 是的 服务的易读名称。
disabled 如果为true,则禁用该服务的通知。
url 是的 事件应发布到的URL。
headers 是的 要添加到每个请求的静态标头列表。每个标头的名称是下方的键headers,每个值是该标头名称的有效负载列表。值必须始终是列表。
timeout 是的 HTTP超时值。一个正整数和一个可选的后缀指示的时间单位,它可以是nsusmssm,或h。如果省略时间单位,ns则使用。
threshold 是的 一个整数,指定要在失败后等待多长时间。
backoff 是的 在发生故障后重试之前,系统关闭的时间。一个正整数和一个可选的后缀指示的时间单位,它可以是nsusmssm,或h。如果省略时间单位,ns则使用。
ignoredmediatypes 要忽略的目标媒体类型列表。具有这些目标媒体类型的事件不会发布到端点。
ignore 具有这些媒体类型或动作的事件不会发布到端点。

ignore

| 参数 必填| 描述 | ----------- | ---------- || -------------------------- ----------------------------- | | mediatypes|否| 要忽略的目标媒体类型列表。具有这些目标媒体类型的事件不会发布到端点。| | actions |否| 要忽略的动作列表。带有这些操作的事件不会发布到端点。|

events

events结构配置事件通知中提供的信息。

范围 必需的 描述
includereferences 如果为true,则在清单事件中包括参考信息。

redis

redis:
  addr: localhost:6379
  password: asecret
  db: 0
  dialtimeout: 10ms
  readtimeout: 10ms
  writetimeout: 10ms
  pool:
    maxidle: 16
    maxactive: 64
    idletimeout: 300s

声明用于构造redis连接的参数。注册表实例可以将Redis实例用于多个应用程序。当前,它缓存有关不可变Blob的信息。大多数redis选项控制注册表如何连接到redis实例。您可以使用“池”小节控制池的行为。

您应该使用allkeys-lru逐出策略配置Redis ,因为注册表未在密钥上设置过期值。

范围 必需的 描述
addr 是的 Redis实例的地址(主机和端口)。
password 用于对Redis实例进行身份验证的密码。
db 每个连接要使用的数据库的名称。
dialtimeout 连接到Redis实例的超时时间。
readtimeout 从Redis实例读取的超时。
writetimeout 写入Redis实例的超时时间。

pool

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

使用这些设置来配置Redis连接池的行为。

范围 必需的 描述
maxidle 池中最大空闲连接数。
maxactive 阻止连接请求之前可以打开的最大连接数。
idletimeout 关闭不活动的连接之前需要等待多长时间。

health

health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3
  file:
    - file: /path/to/checked/file
      interval: 10s
  http:
    - uri: http://server.to.check/must/return/200
      headers:
        Authorization: [Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==]
      statuscode: 200
      timeout: 3s
      interval: 10s
      threshold: 3
  tcp:
    - addr: redis-server.domain.com:6379
      timeout: 3s
      interval: 10s
      threshold: 3

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

storagedriver

storagedriver结构包含用于对配置的存储驱动程序的后端存储进行运行状况检查的选项。仅当enabled设置为时,运行状况检查才处于活动状态true

范围 必需的 描述
enabled 是的 设置为true启用或false禁用存储驱动程序运行状况检查。
interval 两次重复进行存储驱动程序运行状况检查之间需要等待多长时间。一个正整数和一个可选的后缀,表示时间单位。后缀之一nsusmssm,或h10s如果省略该值,则默认为。如果您指定一个值但省略了后缀,则该值将被解释为纳秒数。
threshold 一个正整数,表示在状态被标记为不健康之前检查必须失败的次数。如果未指定,则单个故障会将状态标记为不正常。

file

file结构包括要定期检查文件是否存在的路径列表。如果文件位于给定路径,则运行状况检查将失败。您可以使用此机制通过创建文件来使注册表不再旋转。

范围 必需的 描述
file 是的 检查文件是否存在的路径。
interval 重复检查之前要等待多长时间。一个正整数和一个可选的后缀,表示时间单位。后缀之一nsusmssm,或h10s如果省略该值,则默认为。如果您指定一个值但省略了后缀,则该值将被解释为纳秒数。

http

http结构包括HTTP URI列表,用于定期检查 HEAD请求。如果HEAD请求未完成或返回意外的状态代码,则运行状况检查将失败。

范围 必需的 描述
uri 是的 要检查的URI。
headers 要添加到每个请求的静态标头。每个标头的名称是下方的键headers,每个值是该标头名称的有效负载列表。值必须始终是列表。
statuscode HTTP URI中的预期状态代码。默认为200
timeout HTTP超时之前要等待的时间。一个正整数和一个可选的后缀,表示时间单位。后缀之一nsusmssm,或h。如果您指定一个值但省略了后缀,则该值将被解释为纳秒数。
interval 重复检查之前要等待多长时间。一个正整数和一个可选的后缀,表示时间单位。后缀之一nsusmssm,或h10s如果省略该值,则默认为。如果您指定一个值但省略了后缀,则该值将被解释为纳秒数。
threshold 在状态被标记为不健康之前,检查必须失败的次数。如果未指定此字段,则单个失败会将状态标记为不正常。

tcp

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

范围 必需的 描述
addr 是的 要连接的TCP地址和端口。