首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker注册表:2.0覆盖配置选项

Docker注册表:2.0覆盖配置选项
EN

Stack Overflow用户
提问于 2015-05-11 21:18:42
回答 3查看 6.8K关注 0票数 11

是否有人尝试使用环境变量来覆盖注册表中的配置选项,例如,如果您必须使用s3桶作为存储空间。我读了这篇文档,上面写着(https://docs.docker.com/registry/configuration/):

代码语言:javascript
复制
Overriding configuration options
Environment variables may be used to override configuration parameters other than 
version. To override a configuration option, create an environment variable named 
REGISTRY_variable_ where variable is the name of the configuration option.

e.g

REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/tmp/registry/test

will set the storage root directory to /tmp/registry/test

因此,我尝试了这个命令,但是当我启动注册表时,它似乎没有任何效果:

代码语言:javascript
复制
docker run -it -v /var/log/docker-registry:/var/log -p 5000:5000 \
-e REGISTRY_STORAGE_S3_ACCESSKEY=****************** \
-e REGISTRY_STORAGE_S3_SECRETKEY=****************** \
-e REGISTRY_STORAGE_S3_BUCKET=itmcc-docker-registry-backend \
-e REGISTRY_STORAGE_S3_REGION=us-east-1 \
registry:2.0

在日志中,我看到了常规输出,好像它没有考虑到env变量,并试图连接到S3:

代码语言:javascript
复制
INFO[0000] endpoint local-8082 disabled, skipping        environment=development instance.id=025c9fcd-2ec1-4d5f-82ec-d3246d54cdb5 service=registry version=v2.0.0
INFO[0000] endpoint local-8083 disabled, skipping        environment=development instance.id=025c9fcd-2ec1-4d5f-82ec-d3246d54cdb5 service=registry version=v2.0.0
INFO[0000] using inmemory layerinfo cache                environment=development instance.id=025c9fcd-2ec1-4d5f-82ec-d3246d54cdb5 service=registry version=v2.0.0
INFO[0000] listening on :5000                            environment=development instance.id=025c9fcd-2ec1-4d5f-82ec-d3246d54cdb5 service=registry version=v2.0.0
INFO[0000] Starting upload purge in 42m0s                environment=development instance.id=025c9fcd-2ec1-4d5f-82ec-d3246d54cdb5 service=registry version=v2.0.0
INFO[0000] debug server listening localhost:5001

PS:如果我在我的ec2中使用IAM角色,将访问和秘密密钥传递给码头注册容器似乎是多余的,对接者可以利用IAM角色吗,有人尝试过吗?

编辑:在运行容器和exec命令以查看env的输出之后:

代码语言:javascript
复制
root@0a349294f792:/go/src/github.com/docker/distribution# env
REGISTRY_STORAGE_S3_SECRETKEY=*************************
DISTRIBUTION_DIR=/go/src/github.com/docker/distribution
GOLANG_VERSION=1.4.2
HOSTNAME=0a349294f792
REGISTRY_STORAGE_S3_BUCKET=itmcc-docker-registry-backend
PATH=/go/bin:/usr/src/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/go/src/github.com/docker/distribution
REGISTRY_STORAGE_S3_REGION=us-east-1
SHLVL=1
HOME=/root
GOPATH=/go/src/github.com/docker/distribution/Godeps/_workspace:/go
REGISTRY_STORAGE_S3_ACCESSKEY=*************************
_=/usr/bin/env
root@0a349294f792:/go/src/github.com/docker/distribution#
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-24 19:55:39

docker run命令中为我工作的完整命令是:

代码语言:javascript
复制
docker run -d -p 5000:5000 \
-e "REGISTRY_STORAGE=s3" \
-e "REGISTRY_STORAGE_S3_REGION=us-east-1"\
-e "REGISTRY_STORAGE_S3_BUCKET=******"\ 
-e "REGISTRY_STORAGE_S3_ACCESSKEY=******"\ 
-e "REGISTRY_STORAGE_S3_SECRETKEY=******"\ 
registry:2

注意添加了REGISTRY_STORAGE=s3环境变量。

他们在注册表文档中暗示了这一点

注意:如果环境变量将映射值更改为字符串,例如用REGISTRY_STORAGE=filesystem替换存储驱动程序类型,那么所有子字段都将被删除。因此,在环境中指定存储类型将删除与旧存储配置相关的所有参数。

票数 18
EN

Stack Overflow用户

发布于 2015-05-26 07:37:40

尝试将-e REGISTRY_STORAGE=s3添加到docker run命令中。这会用空覆盖默认的filesystem配置。

详细信息:https://github.com/docker/distribution/blob/master/docs/configuration.md >覆盖配置选项>注意事项

票数 7
EN

Stack Overflow用户

发布于 2015-05-11 23:32:52

我正在通过docker run命令中的环境变量加载访问键和秘密密钥。但是,我在配置文件中指定了桶名和区域,在寻找问题解决方案的过程中,似乎必须在配置文件中指定区域和桶名。每当我试图在我的docker run命令中在环境变量中指定这些变量时,我都会得到错误,容器不会启动。我建议通过配置文件(并将这些标志放在docker run命令中)加载这些信息,并像您一样通过环境变量指定访问键和秘密密钥。我花了一些时间在源代码中寻找信息,了解它为什么不能以我们认为应该的方式工作,但却没有遇到任何真正有用的东西。我认为这肯定是AWS S3不喜欢的东西,但我并没有试图弄清楚这一点,因为在上面的配置中,它对我起作用。祝好运!

PS:关于您的IAM访问,在源中有一些注释可能会帮助您了解预期的内容。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30177828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档