docker registry push错误“server gave HTTP response to HTTPS client”
系统环境:centos7
docker版本: 1.12.3(注意版本,可能存在不同版本设置不同的情况)
docker registry版本:2.4.1
问题:
成功安装docker registry,在浏览器中输入http://192.168.159.159:5000/v2,成功返回json数据。在push 到docker registry时,报:
[root@docker01 mysql]# docker push 192.168.159.159:5000/nginx
The push refers to a repository [192.168.159.159:5000/nginx]
Get https://192.168.159.159:5000/v2/: http: server gave HTTP response to HTTPS client
这个问题可能是由于客户端采用https,docker registry未采用https服务所致。一种处理方式是把客户对地址“192.168.159.159:5000”请求改为http。
目前很多文章都是通过修改docker的配置文件“etc/systemconfig/docker”,重启docker来解决这个问题。但发现docker1.12.3版本并无此文件,根据网上创建此文件,并填入相应内容,重启docker无效果,仍然报此错误。
解决方法:
在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入:
{ "insecure-registries":["192.168.159.159:5000"] }
保存退出后,重启docker。问题解决:
[root@docker01 mysql]# systemctl restart docker
[root@docker01 mysql]# docker start 82b2384664e6
82b2384664e6
[root@docker01 mysql]# docker push 192.168.159.159:5000/nginx
The push refers to a repository [192.168.159.159:5000/nginx]
2a7ae0eb82d1: Pushed
9b0e680891f9: Pushed
454e2d722383: Pushed
34b2304ded0d: Pushed
window server 2016,默认安装docker的配置文件在“C:\ProgramData\docker\config\”。可以在该目录下创建”daemon.json“文件,解决此问题。