我得到了以下错误(参见下面的执行命令):
DEBU[0000] using "text" logging formatter
panic: Get : 301 response missing Location header
goroutine 1 [running]:
github.com/docker/distribution/registry/handlers.NewApp(0x7f5f7ba3eab8, 0xc2080cf1a0, 0xc20802b8a0, 0x3, 0xc20802b8d8, 0x5, 0xc20802b908, 0x4, 0xc2080ce720, 0xa5e630, ...)
/go/src/github.com/docker/distribution/registry/handlers/app.go:81 +0x5eb
main.main()
/go/src/github.com/docker/distribution/cmd/registry/main.go:62 +0x439
goroutine 6 [syscall]:
os/signal.loop()
/usr/src/go/src/os/signal/signal_unix.go:21 +0x1f
created by os/signal.init·1
/usr/src/go/src/os/signal/signal_unix.go:27 +0x35
goroutine 10 [runnable]:
net/http.(*persistConn).readLoop(0xc20809d6b0)
/usr/src/go/src/net/http/transport.go:928 +0x9ce
created by net/http.(*Transport).dialConn
/usr/src/go/src/net/http/transport.go:660 +0xc9f
goroutine 17 [syscall, locked to thread]:
runtime.goexit()
/usr/src/go/src/runtime/asm_amd64.s:2232 +0x1
goroutine 11 [select]:
net/http.(*persistConn).writeLoop(0xc20809d6b0)
/usr/src/go/src/net/http/transport.go:945 +0x41d
created by net/http.(*Transport).dialConn
/usr/src/go/src/net/http/transport.go:661 +0xcbc我将以以下方式启动码头注册:
docker run \
--rm -it \
--env="REGISTRY_STORAGE_S3_ACCESSKEY=SECRET_KEY" \
--env="REGISTRY_STORAGE_S3_SECRETKEY=ACCESS_KEY" \
--env="REGISTRY_STORAGE_S3_BUCKET=bucket" \
--env="REGISTRY_HTTP_TLS_CERTIFICATE=/go/src/github.com/docker/distribution/certs/domain.crt" \
--env="REGISTRY_HTTP_TLS_KEY=/go/src/github.com/docker/distribution/certs/domain.key" \
--env="REGISTRY_HTTP_ADDR=localhost:5000" \
--name="registry" \
--publish="5000:5000" \
--volume="/sandbox/docker/certs:/go/src/github.com/docker/distribution/certs" \
--volume="/sandbox/docker/registry/config.yml:/go/src/github.com/docker/distribution/cmd/registry/config.yml" \
distribution/registry cmd/registry/config.yml出于安全原因,REGISTRY_STORAGE_S3_ACCESSKEY、REGISTRY_STORAGE_S3_SECRETKEY和REGISTRY_STORAGE_S3_BUCKET保存虚拟值。我能够使用它们从所需的s3桶中写入\read。
下面是一些更多的信息:
$ docker info
Containers: 0
Images: 109
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 109
Dirperm1 Supported: false
Execution Driver: native-0.2
Kernel Version: 3.13.0-53-generic
Operating System: Ubuntu 14.04.2 LTS
CPUs: 4
Total Memory: 15.54 GiB
Name: heaven
ID: REMOVED_FOR_SECURITY_REASONS
WARNING: No swap limit support目录结构:
$ ls -R /sandbox/docker
/sandbox/docker/certs:
domain.crt
domain.key
/sandbox/docker/registry:
config.yml我的config.yml文件:
$ cat /sandbox/docker/registry/config.yml
version: 0.1
log:
level: debug
formatter: text
fields:
service: registry
environment: prod
storage:
s3:
accesskey: awsaccesskey
secretkey: awssecretkey
region: us-west-1
bucket: bucket
encrypt: true
secure: true
v4auth: true
chunksize: 5242880
rootdirectory: /s3/object/name/prefix
cache:
layerinfo: inmemory
auth:
token:
realm: token-realm
service: token-service
issuer: registry-token-issuer
rootcertbundle: /root/certs/bundle
http:
addr: localhost:5000
secret: myspecialsecret
tls:
certificate: /go/src/github.com/docker/distribution/certs/domain.crt
key: /go/src/github.com/docker/distribution/certs/domain.key
debug:
addr: localhost:5001认证档案:
$ grep -r "^----" /sandbox/docker/certs/
/sandbox/docker/certs/domain.crt:-----BEGIN CERTIFICATE-----
/sandbox/docker/certs/domain.crt:-----END CERTIFICATE-----
/sandbox/docker/certs/domain.crt:-----BEGIN CERTIFICATE-----
/sandbox/docker/certs/domain.crt:-----END CERTIFICATE-----
/sandbox/docker/certs/domain.key:-----BEGIN CERTIFICATE-----
/sandbox/docker/certs/domain.key:-----END CERTIFICATE-----其中domain.crt还持有中间证书(在底部连接)。
谁能指出出什么问题了吗?
我知道我可以构建一个新的注册表映像,如码头医生所示,但我只想使用没有docker build的docker run来实现它。
发布于 2015-09-09 22:04:54
当配置文件中指定了错误的S3区域时,就会发生这种情况。参见类似的报告:https://github.com/docker/distribution/issues/854
发布于 2015-07-06 23:59:16
这似乎是一个类似的问题,因为这个问题是使用错误的s3区域作为桶:https://github.com/mitchellh/goamz/issues/51。
https://stackoverflow.com/questions/30413863
复制相似问题