一、背景
我们使用nexus搭建了一个Docker Registry私有仓库,在Mac操作系统,在推送本地镜像到私库前,要求我们登录私库,报错如下:
docker login 192.168.5.6:8086 -u username -p password
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://192.168.5.6:8086/v2/": http: server gave HTTP response to HTTPS client
错误信息 http: server gave HTTP response to HTTPS client 表示客户端期望与服务器建立 HTTPS 连接,但服务器却返回了 HTTP 响应。这通常意味着客户端尝试通过 HTTPS 连接到一个仅支持 HTTP 的服务器。
二、nexus私库
在公司研发环境下,搭建的docker私有仓库,只支持http协议,并不涉及https证书。
一般,我们会在/etc/docker/daemon.json 配置Docker Daemon:
{
"registry-mirrors": ["http://192.168.5.6:8087"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3",
"labels": "production_status",
"env": "os,customer"
},
"insecure-registries" : [
"192.168.5.6:8086",
"192.168.5.6:8087"
]
}
insecure-registries 添加私库的白名单。
三、Docker Desktop
-
官方下载dmg文件,手动安装。注意你的os版本是否符合所下载软件的要求。
官方 Docker Desktop -
brew安装
brew install --cask --appdir=/Applications docker
双击并启动即可。
四、总结
如果你是通过命令行的方式更新文件/etc/docker/daemon.json,然后在docker desktop重启,并不能解决问题。
在mac操作系统下,你不能像Linux操作系统那样,使用下面的重启命令。
systemctl daemon-reload && systemctl restart docker
二者,mac用户并非root用户,你需要sudo才能写入文件/etc/docker/daemon.json。重要的是,docker desktop并不加载读取它。
所以,在docker desktop的设置中,你得找到Docker Engine的daemon配置。
此时重启docker,再次登录,就不会报错了。-- Login Succeeded