首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker运行注册表错误301响应丢失位置标头

docker运行注册表错误301响应丢失位置标头
EN

Stack Overflow用户
提问于 2015-05-23 14:29:18
回答 2查看 1.5K关注 0票数 2

我得到了以下错误(参见下面的执行命令):

代码语言:javascript
复制
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

我将以以下方式启动码头注册:

代码语言:javascript
复制
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桶中写入\read。

下面是一些更多的信息:

代码语言:javascript
复制
$ 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

目录结构:

代码语言:javascript
复制
$ ls -R /sandbox/docker
/sandbox/docker/certs:
domain.crt
domain.key

/sandbox/docker/registry:
config.yml

我的config.yml文件:

代码语言:javascript
复制
$ 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

认证档案:

代码语言:javascript
复制
$ 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 builddocker run来实现它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-09 22:04:54

当配置文件中指定了错误的S3区域时,就会发生这种情况。参见类似的报告:https://github.com/docker/distribution/issues/854

票数 2
EN

Stack Overflow用户

发布于 2015-07-06 23:59:16

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

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

https://stackoverflow.com/questions/30413863

复制
相关文章

相似问题

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