docker push报错

batsh 2015-11-12 01:30:50
我搭建了一个docker私有仓库,
1、系统是centos6
2、通过nginx 代理,并增加了用户名和密码认证,还有ssl加密传输
3、docker仓库registry是安装在192.168.0.40上,并且nginx也是安装在这台主机上
nginx配置如下:
server {
listen 443;
server_name registry.info.cn;
ssl on;
ssl_certificate info.cn.crt;
ssl_certificate_key info.cn.key;
access_log logs/host.access.log main;
location / {
auth_basic "Security Zones";
auth_basic_user_file /usr/local/nginx/password;
proxy_pass http://192.168.0.40:5000;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

}


其中ca证书是花钱购买的,能正常使用。
在docker客户端通过
curl -X GET https://test:test@registry.info.cn/v1/search 能正确返回
docker login https://registry.info.cn 可以正常登录,能返回success

但是我push一个images到registry的时候就报错
[root@localhost /]# docker push registry.info.cn/centos7
The push refers to a repository [registry.info.cn/centos7] (len: 1)
Sending image list
Pushing repository registry.info.cn/centos7 (1 tags)
47d44cb6f252: Pushing
Failed to upload metadata: Put https://192.168.0.40:5000/v1/ima ... 8f92557f4d05a/json: EOF


我这里好奇的是,push的时候怎么又会解析出IP来访问了,https://192.168.0.40:5000这个肯定是会出错的,不知道原因?????
...全文
294 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
batsh 2015-11-13
  • 打赏
  • 举报
回复
问题已解决,是nginx的配置问题,默认反向代理服务器会向后端真实服务器发送请求,并且请求头中的host字段应为proxy_pass指令设置的服务器。 所以只要在nginx的location里增加如下配置即可,作用是不修改web请求header中的host字段。 proxy_set_header Host $http_host;

1,163

社区成员

发帖
与我相关
我的任务
社区描述
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux 机器上,也可以实现虚拟化。
社区管理员
  • Docker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧