wharf docker login/push失败
编译过程如下:
#godep go build
配置如下:
runmode = dev
enablehttptls = true
httpsport = 443
httpcertfile = cert/containerops.me/containerops.me.crt
httpkeyfile = cert/containerops.me/containerops.me.key
gravatar = data/gravatar
BasePath = /tmp/registry
StaticPath = files
Endpoints = 10.13.131.26
Version = 0.9.0
Config = prod
Standalone = true
Encrypt = false
API = v2
DataDir = /tmp/ledisdb
DB = 8
FilePath = /tmp
FileName = containerops-log
Provider = ledis
SavePath = /tmp/session
Domain = 10.13.131.26
Web前端注册一个scesce帐号后,本地docker login报错如下:
# docker login 10.13.131.26
FATA Error response from daemon: no successful auth challenge for https://10.13.131.26/v2/ - errors:
将bucket.conf中的enablehttptls配置为false,可以成功login了。不知道上面为什么会失败?
docker push又失败,报错如下:
# docker push 10.13.131.26/scesce/test
511136ea3c5a: Image push failed
FATA Error pushing to registry: Put https://10.13.131.26/v2/scesce/test/blobs/uploads/ae6967c38cdc9a1cbc76e47e28be721e?digest=tarsum.v1%2Bsha256%3Ae3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855: dial tcp 10.13.131.26:443: connection refused
这又如何破?
5 个回复
马全一
赞同来自:
需要本地指定
containerops.me
的域名到10.13.131.26
才可以,修改/etc/hosts
文件。然后
docker login containerops.me
docker push containerops.me/scesce/test
如果使用 IP 的话,需要自己制作证书,替换 wharf 的证书,并且在 docker 所在的机器上修改配置才可以,你确定要这么做?
wangzi19870227 - sina攻城狮,docker爱好者
赞同来自:
本地将
10.13.131.26 containerops.me
加入/etc/hosts
,并配置--insecure-registry containerops.me
后,可以登录了。但push还是报错。<pre>
docker login containerops.me
Username: scescePassword:
Email:
Login Succeeded
docker push containerops.me/scesce/test:swarm
511136ea3c5a: Image push failedFATA Error pushing to registry: Put https://10.13.131.26/v2/scesce ... b855: dial tcp 10.13.131.26:443: connection refused
</pre>
马全一
赞同来自:
<ol><li>
--insecure-registry containerops.me
这个选项不配置</li><li>Endpoints = 10.13.131.26
改为Endpoints=containerops.me
</li><li>使用 0.3.1 release 的版本,目前 master 版本上改动太多,可能有问题。</li></ol>JCheng
赞同来自:
请问为什么按你们讨论的方法无法启动 wharf 呢?配置文件如下:
runmode = dev
enablehttptls = false
httpsport = 443
httpcertfile = cert/containerops.me/containerops.me.crt
httpkeyfile = cert/containerops.me/containerops.me.key
gravatar = data/gravatar
BasePath = /tmp/registry
StaticPath = files
Endpoints = containerops.me:9000
Version = 0.9.0
Config = prod
Standalone = true
Encrypt = false
API = v1
DataDir = /tmp/ledisdb
DB = 8
FilePath = /tmp
FileName = containerops-log
Provider = ledis
SavePath = /tmp/session
Domain = containerops.me:9000
/etc/hosts 中是这样:
127.0.0.1 containerops.me
按如下命令启动:
./wharf web --address 127.0.0.1 --port 9000
结果 login 可以成功, push 失败,wharf 日志提示 Header Authorization Error,docker 是提示:
FATA HTTP code 404 while uploading metadata: "json: cannot unmarshal array into Go value of type string"
假如把 enablehttptls 设为 true 时,在网页里面登录,提示登录成功,但就是不跳转界面,手动输入网址也会跳到登录界面。所以我把 enablehttptls 设为 false 了。
另外没有配置 nginx.
请问可能是什么问题呢?
JCheng
赞同来自:
配置如下:
runmode = dev
enablehttptls = true
httpsport = 443
httpcertfile = cert/containerops.me/containerops.me.crt
httpkeyfile = cert/containerops.me/containerops.me.key
gravatar = data/gravatar
BasePath = /tmp/registry
StaticPath = files
Endpoints = containerops.me
Version = 0.9.0
Config = prod
Standalone = true
Encrypt = false
API = v1
DataDir = /tmp/ledisdb
DB = 8
FilePath = /tmp
FileName = containerops-log
Provider = ledis
SavePath = /tmp/session
Domain = containerops.me
/etc/hosts 中是这样:
0.0.0.0 containerops.me
按如下命令启动:
sudo ./wharf web --address 0.0.0.0
然后可以正常 login 和 push,不过这样子在浏览器中登录成功却无法跳转。
跳转问题没有解决,但改 enablehttptls = false 就可以在浏览器正常使用,但这时候 docker 客户端是无法 push 的。
所以我只能在 enablehttptls = true 的时候把镜像 push 上去,enablehttptls = false 的时候在浏览器登录查看。
等待后期或别人有没有好的解决方案吧。