总结一下 建立docker 私有仓库 上传镜像失败的各种原因和解决办法
案例:公司申请的云服务器添加了安全组,所有端口都关闭入网访问权,按需开放端口。很不幸docker 私有仓库本地映射端口一般是5000,这个端口并没有开放权限,所以呢上传镜像到docker私有仓库 死活不行,报错Timeout exceeded while awaiting headers ,具体如下:
[root@hw-biz-alpha admin]# docker push x:5000/myhello
The push refers to repository [x:5000/myhello]
Get :5000/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
当然也有可能是主机服务器防火墙端口没开的问题
docker 默认不允许http 方式推送镜像。但我们可以通过 docker 的配置选项来取消这个限制
centos7 的docker配置文件 /etc/docker/daemon.json ,如果这个文件不存在就自己创建,其他系统没注意ubuntu16好像也是
http 方法推送镜像报错 http: server gave HTTP response to HTTPS client,具体如下:
[root@hw-biz-alpha admin]# docker push x:5000/myhello
The push refers to repository [x:5000/myhello]
Get :5000/v2/: http: server gave HTTP response to HTTPS client
解决:配置支持http方式推送镜像
在docker 配置文件中配置insecure-registries 如下:
注: 下面x 是我这里想要配置的地址,你们需要改成自己想要配置的地址,别无脑照着复制,registry-mirrors 配置的是国内阿里提供的镜像加速地址,不用加速的话访问官网的会很慢。2个配置中间有个逗号 ','别漏了,这个配置是json格式的。
vi /etc/docker/daemon.json{"registry-mirrors": [""],"insecure-registries": ["x:5000"]
}
高高兴兴配置了docker http推送 ,保存退出,开始推送到私有镜像,然后还是失败!
配置后我们需要重启docker,不然配置没生效!
centos7 docker 重启命令
sudo systemctl restart docker
再次docker push xxx ,终于成功了!
单机可以用http方式访问自己构建的docker私有镜像仓库,但是其他机器就不能用http方式访问这个docker私有镜像仓库
原因:每一个要使用http方式访问私有镜像仓库的机器上docker 都要配置 insecure-registries
解决:
vi /etc/docker/daemon.json
{"insecure-registries": ["x:5000"]
}
重启docker
sudo systemctl restart docker
本文发布于:2024-01-29 12:11:25,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170650148715191.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |