配置注册表
预计阅读时间:35分钟
注册表配置基于YAML文件,详细信息如下。尽管开箱即用了默认值,但在将系统投入生产之前,您应该进行详尽的检查。
覆盖特定的配置选项
在从正式映像运行注册表的典型设置中,您可以通过将-e
参数传递给docker run
节或使用ENV
指令从Dockerfile内,从环境中指定配置变量。
要覆盖配置选项,请创建一个名为REGISTRY_variable
where的环境变量,该变量
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 |
不 | 设置日志记录输出的灵敏度。允许值是error ,warn ,info ,和debug 。默认值为info 。 |
formatter |
不 | 这将选择日志输出的格式。该格式主要影响日志行的键控属性的编码方式。选项包括text ,json ,和logstash 。默认值为text 。 |
fields |
不 | 字段名称到值的映射。这些被添加到上下文的每个日志行。这对于在其他系统中混合后识别日志消息源很有用。 |
accesslog
accesslog:
disabled: true
在中log
,accesslog
配置访问日志记录系统的行为。默认情况下,访问日志记录系统以“组合日志格式”输出到stdout
。访问日志记录可以通过布尔标志设置禁用disabled
到true
。
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
允许值是error
,warn
,info
和debug
。默认值为
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 |
是的 | 设置dryrun 为true 获取要删除哪些目录的摘要。默认为false 。 |
注意:
age
和interval
是包含带可选分数和单位后缀的数字的字符串。一些例子:45m
,2h10m
,168h
。
readonly
如果readonly
部分下maintenance
已经enabled
设置true
,客户端将不会被允许写入到注册表中。此模式对于临时阻止写入后端存储很有用,因此可以运行垃圾收集通道。在运行垃圾收集之前,应将readonlyenabled
设置为true来重新启动注册表。垃圾收集通过完成后,注册表可能会重新启动,这次是readonly
从配置中删除(或设置为false)。
delete
使用该delete
结构可以通过摘要删除图像斑点和清单。它的默认值为false,但是可以通过在配置文件中写入以下内容来启用它:
delete:
enabled: true
cache
使用该cache
结构启用对存储后端中访问的数据进行缓存。当前,唯一可用的缓存提供对层元数据的快速访问,blobdescriptor
如果配置,该元数据将使用该字段。
您可以将blobdescriptor
field设置为redis
或inmemory
。如果设置为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
认证提供商是仅适用于开发。它只是检查Authorization
HTTP请求中标头的存在。它不检查标题的值。如果标头不存在,则silly
auth将以质询响应进行响应,回显拒绝访问的领域,服务和范围。
以下值用于配置响应:
范围 | 必需的 | 描述 |
---|---|---|
realm |
是的 | 注册服务器在其中进行身份验证的领域。 |
service |
是的 | 正在认证的服务。 |
token
基于令牌的身份验证使您可以将身份验证系统与注册表分离。这是一种已建立的具有高度安全性的认证范例。
范围 | 必需的 | 描述 |
---|---|---|
realm |
是的 | 注册服务器在其中进行身份验证的领域。 |
service |
是的 | 正在认证的服务。 |
issuer |
是的 | 令牌发行者的名称。发行者将其插入令牌,因此它必须与为发行者配置的值匹配。 |
rootcertbundle |
是的 | 根证书捆绑包的绝对路径。该捆绑包包含用于签署身份验证令牌的证书的公共部分。 |
autoredirect |
不 | 设置为时true ,realm 将使用请求的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
每个中间件条目都有name
和options
条目。在name
必须与在其下的中间件自身注册名称。该
options
字段是一个映射,详细描述了初始化中间件所需的自定义配置。它被视为map[string]interface{}
。这样,它支持所需的任何有趣的结构,将其留给中间件初始化功能来最好地确定如何处理选项的特定解释。
cloudfront
范围 | 必需的 | 描述 |
---|---|---|
baseurl |
是的 | 该SCHEME://HOST[/PATH] 处的Cloudfront供应。 |
privatekey |
是的 | 由AWS提供的Cloudfront的私钥。 |
keypairid |
是的 | AWS提供的密钥对ID。 |
duration |
不 | Cloudfront会话持续时间的整数和单位。有效时间单位是ns ,us (或µs ), ,ms ,s ,m 或h 。例如,3000s 有效,但3000 s 无效。如果您未指定aduration 或指定不带时间单位的整数,则持续时间默认为20m (20分钟)。 |
ipfilteredby |
不 | 具有以下值的字符串none ,aws 或awsregion 。 |
awsregion |
不 | 逗号分隔的AWS区域字符串,仅在ipfilteredby is时可用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 |
不 | 曲目而注册表部署,使用字符串像production ,staging 或development 。 |
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:PORT TCP和FILE 一个UNIX套接字。 |
net |
不 | 用于创建侦听套接字的网络。已知的网络为unix 和tcp 。 |
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
。注册表默认为监听port5000
。如果将注册表作为容器运行,请考虑将标志添加-p 443:5000
到docker 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
在定义addr
下debug
。
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超时值。一个正整数和一个可选的后缀指示的时间单位,它可以是ns ,us ,ms ,s ,m ,或h 。如果省略时间单位,ns 则使用。 |
threshold |
是的 | 一个整数,指定要在失败后等待多长时间。 |
backoff |
是的 | 在发生故障后重试之前,系统关闭的时间。一个正整数和一个可选的后缀指示的时间单位,它可以是ns ,us ,ms ,s ,m ,或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 |
不 | 两次重复进行存储驱动程序运行状况检查之间需要等待多长时间。一个正整数和一个可选的后缀,表示时间单位。后缀之一ns ,us ,ms ,s ,m ,或h 。10s 如果省略该值,则默认为。如果您指定一个值但省略了后缀,则该值将被解释为纳秒数。 |
threshold |
不 | 一个正整数,表示在状态被标记为不健康之前检查必须失败的次数。如果未指定,则单个故障会将状态标记为不正常。 |
file
该file
结构包括要定期检查文件是否存在的路径列表。如果文件位于给定路径,则运行状况检查将失败。您可以使用此机制通过创建文件来使注册表不再旋转。
范围 | 必需的 | 描述 |
---|---|---|
file |
是的 | 检查文件是否存在的路径。 |
interval |
不 | 重复检查之前要等待多长时间。一个正整数和一个可选的后缀,表示时间单位。后缀之一ns ,us ,ms ,s ,m ,或h 。10s 如果省略该值,则默认为。如果您指定一个值但省略了后缀,则该值将被解释为纳秒数。 |
http
该http
结构包括HTTP URI列表,用于定期检查
HEAD
请求。如果HEAD
请求未完成或返回意外的状态代码,则运行状况检查将失败。
范围 | 必需的 | 描述 |
---|---|---|
uri |
是的 | 要检查的URI。 |
headers |
不 | 要添加到每个请求的静态标头。每个标头的名称是下方的键headers ,每个值是该标头名称的有效负载列表。值必须始终是列表。 |
statuscode |
不 | HTTP URI中的预期状态代码。默认为200 。 |
timeout |
不 | HTTP超时之前要等待的时间。一个正整数和一个可选的后缀,表示时间单位。后缀之一ns ,us ,ms ,s ,m ,或h 。如果您指定一个值但省略了后缀,则该值将被解释为纳秒数。 |
interval |
不 | 重复检查之前要等待多长时间。一个正整数和一个可选的后缀,表示时间单位。后缀之一ns ,us ,ms ,s ,m ,或h 。10s 如果省略该值,则默认为。如果您指定一个值但省略了后缀,则该值将被解释为纳秒数。 |
threshold |
不 | 在状态被标记为不健康之前,检查必须失败的次数。如果未指定此字段,则单个失败会将状态标记为不正常。 |
tcp
该tcp
结构包括一个TCP地址列表,用于定期使用TCP连接尝试进行检查。地址必须包含端口号。如果连接尝试失败,则运行状况检查将失败。
范围 | 必需的 | 描述 |
---|---|---|
addr |
是的 | 要连接的TCP地址和端口。 |
|