跳转至

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详见这里

回到页面顶部