docker运行registry错误301响应缺less位置标题

我收到以下错误(请参阅下面的执行命令):

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 

我开始dockerregistry如下:

 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_ACCESSKEYREGISTRY_STORAGE_S3_SECRETKEYREGISTRY_STORAGE_S3_BUCKET出于安全原因保存虚拟值。 我能够使用它们来写所需的s3桶读取。

这里是一些更多的信息:

 $ 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 

authentication档案:

 $ 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也拥有中间证书(连接在底部)。

任何人都可以请指出什么是错的?

我知道我可以构build一个新的registry映像,如docker文档中所示,但是我想只用docker run而不是docker build

在configuration文件中指定错误的S3区域时,会发生这种情况。 看到类似的报告在这里: https : //github.com/docker/distribution/issues/854

似乎这是一个类似的问题,问题在于使用错误的s3区域的斗: https : //github.com/mitchellh/goamz/issues/51