Docker with an unknown CA certificate
2016-06-30 by dongnan
问题描述
使用 docker registry
私有仓库,推送镜像失败提示错误信息如下:
# 执行命令
docker push hub.dev.ywwd.net/hello-world
If this private registry supports only HTTP or HTTPS with an unknown CA certificate,
please add `--insecure-registry hub.dev.ywwd.net` to the daemon's arguments. In the case of HTTPS,
if you have access to the registry's CA certificate, no need for the flag;
simply place the CA certificate at /etc/docker/certs.d/hub.dev.ywwd.net/ca.crt
错误原因
这是因为自签名证书不被操作系统信任,有三种解决方式:
- 购买一个经认证的
SSL
证书。 - 配置
docker
忽略的仓库证书验证,例如DOCKER_OPTS="--insecure-registry hub.dev.ywwd.net"
然后重启。 - 系统导入自签名证书,让
docker
客户端单向相信这个registry
,然后重启客户端。
解决方法
这里我们选择的是第二种方案,忽略证书信息:
# 在 /etc/docker/daemon.json 中写入如下内容,如果没有这个文件则创建它
{
"insecure-registries": [
"192.168.199.100:5000"
]
}
验证
登陆仓库
# 执行命令
docker login hub.dev.ywwd.net -u dongnan -p ywwd.net -e dongnan@ywwd.net
WARNING: login credentials saved in /root/.docker/config.json
Login Succeeded
# 再次推送
docker push hub.dev.ywwd.net/hello-world
对于私有仓库,推荐使用 harbor
代替 docker registry
,详见这里。