使用SSL和基本身份validation在AWS ECS上运行私有Dockerregistryv2

我试图在ECS上build立一个私人dockerregistry(按照http://www.elastic.io/en/running-a-docker-private-registry-on-ec2/的指导),在前面有一个ELB ,使用自签名证书终止SSL。 registry本身正在运行并向ELB注册,在更新OS ca-cert软件包和docker主机文件夹以及自签名证书的CA之后,我可以成功运行curl -u myuser:mypass https://myawselb.domain/v2/ ,我可以成功地做docker login myawselb.domain ,但做docker push myawselb.domain/my-image总是失败,不pipe是什么…我已经尝试了所有组合的仓库IDID有和没有端口和HTTPS前缀,但所有请求都失败。 这是在docker日志中logging的:

 time="2015-10-20T20:05:12.197307689Z" level=debug msg="Calling POST /images/{name:.*}/push" time="2015-10-20T20:05:12.197370508Z" level=info msg="POST /v1.20/images/myawselb.domain/myimage/push?tag=" time="2015-10-20T20:05:32.439207664Z" level=debug msg="hostDir: /etc/docker/certs.d/myawselb.domain" time="2015-10-20T20:05:42.630367623Z" level=debug msg="hostDir: /etc/docker/certs.d/myawselb.domain" time="2015-10-20T20:05:42.630665342Z" level=debug msg="Trying to push myawselb.domain/my-image to https://myawselb.domain v2" time="2015-10-20T20:05:47.635771226Z" level=debug msg="Error getting v2 registry: Get https://myawselb.domain/v2/: net/http: request canceled while waiting for connection" time="2015-10-20T20:05:47.635965903Z" level=debug msg="Trying to push myawselb.domain/my-image to https://myawselb.domain v1" 

然后再尝试一些尝试失败,404页面未find。

registry服务器日志:

 time="2015-10-20T20:26:09Z" level=warning msg="error authorizing context: basic authentication challenge: htpasswd.challenge{realm:\"my auth realm\", err:(*errors.errorString)(0xc2080792d0)}" http.request.host=myawselb.domain http.request.id=510894a1-2db5-4782-98da-d9fefc6b13cc http.request.method=GET http.request.remoteaddr=myip http.request.uri="/v2/" http.request.useragent="docker/1.8.3 go/go1.4.2 git-commit/f4bf5c7 kernel/4.1.10-boot2docker os/linux arch/amd64" instance.id=my-instance-id version=v2.1.1 10.0.0.x - - [20/Oct/2015:20:26:09 +0000] "GET /v2/ HTTP/1.1" 401 114 "" "docker/1.8.3 go/go1.4.2 git-commit/f4bf5c7 kernel/4.1.10-boot2docker os/linux arch/amd64" 10.0.0.y - - [20/Oct/2015:20:26:19 +0000] "PUT /v1/repositories/my-image/ HTTP/1.1" 404 19 "" "docker/1.8.3 go/go1.4.2 git-commit/f4bf5c7 kernel/4.1.10-boot2docker os/linux arch/amd64" 

我可能已经忘记了一些显而易见的事情,但是我已经开始意识不清了。 所以任何援助非常感谢。

显然你的docker守护进程无法通过HTTP协议到myawselb.domain你确定它可以从myawselb.domain守护进程运行的主机上parsing吗?

另一件要检查的地方是本地docker版本是最新版本之一,之前我们遇到了一些与docker守护进程有关的问题。

长Renat

出于某种原因,从docker vm中的/etc/resolv.conf中删除名称服务器8.8.8.8解决了这个问题。 我不知道为什么这应该有所作为,但它确实。