Docker 私有注册表 | TLS 证书问题

Docker private registry | TLS certificate issue

我尝试按照以下方法tutorial 在 AWS Centos 机器上设置我们自己的私有注册表 (v2)。

我已经自己签署了一个 TLS 证书并将其放在 /etc/docker/certs.d/MACHINE_STATIS_IP:5000/

尝试登录注册表(docker 登录 MACHINE_IP:5000)或推送标记存储库(MACHINE_IP:5000/ubuntu:最新)时,出现以下错误:

Error response from daemon: Get https://MACHINE_IP:5000/v1/users/: x509: cannot validate certificate for MACHINE_IP because it doesn't contain any IP SANs

我试图搜索答案 2 天,但我找不到任何答案。 我已将证书 CN(通用名称)设置为 MACHINE_STATIC_IP:5000

使用自签名 TLS 证书时 docker 守护程序要求您将证书添加到它的已知证书中。

使用keytool命令获取证书:

keytool -printcert -sslserver ${NEXUS_DOMAIN}:${SSL_PORT} -rfc > ${NEXUS_DOMAIN}.crt

并将其复制到您客户端的机器 SSL 证书目录(在我的例子中 - ubuntu):

sudo cp ${NEXUS_DOMAIN}.crt /usr/local/share/ca-certificates/${NEXUS_DOMAIN}.crt && sudo update-ca-certificates

现在重新加载 docker 守护程序,一切顺利:

sudo systemctl restart docker

您也可以使用以下命令暂时信任该证书,而无需将其添加到您的系统证书中。

docker --tlscert <the downloaded tls cert> pull <whatever you want to pull>