docker(在代理后面)从azure容器注册表中拉出,但从注册表-1.docker.io中,它给出了由未知权限签名的证书错误

docker(在代理后面)从azure容器注册表中拉出,但从注册表-1.docker.io中,它给出了由未知权限签名的证书错误,docker,proxy,ssl-certificate,docker-registry,azure-container-registry,Docker,Proxy,Ssl Certificate,Docker Registry,Azure Container Registry,在ubuntu 18.04虚拟机中 我在一个代理后面,我已经用同一个代理设置了docker配置 我创建了一个azure容器注册表,当尝试从注册表中提取docker时,它可以工作 但在尝试: $docker运行节点:6 我得到一个错误: “docker:来自守护进程的错误响应:Get:x509:未知授权机构签署的证书。” 我已将注册表添加到/etc/docker/daemon.json: { “不安全的注册表”:[“registry-1.docker.io”,“myazureContainerRe

在ubuntu 18.04虚拟机中

我在一个代理后面,我已经用同一个代理设置了docker配置

我创建了一个azure容器注册表,当尝试从注册表中提取docker时,它可以工作

但在尝试:

$docker运行节点:6

我得到一个错误: “docker:来自守护进程的错误响应:Get:x509:未知授权机构签署的证书。”

我已将注册表添加到/etc/docker/daemon.json:

{

“不安全的注册表”:[“registry-1.docker.io”,“myazureContainerRegistry.azurecr.io”]

}

通过执行上述步骤,“$docker run myazureContainerRegistry.azurecr.io/myimage:tag”可以工作,但“$docker run node:6”仍会给出证书错误

我已经将“*.docker.io”的证书添加到/etc/docker/certs.d/docker.io和/usr/local/share/ca-certificate(sudo-apt-update-ca-certificates)中,但它仍然不起作用

我还试图:

  • $curl-k

  • $wget--无支票证书

  • 这两个步骤都有效,但对于docker(要运行/拉取节点:6),我仍然会得到证书错误

    “$docker--version”的输出是:“docker版本18.09.2”

    这就是我的~/.docker/config.json的样子:


    我希望“docker run node:6”能够成功地提取映像,但实际上它会为您的问题提供错误信息,首先,您需要在~/.docker/config.json中拥有证书。然后,您可以从注册表中提取图像,而无需登录。然后,您可以执行该命令,而无需在之前拖动图像。对于您,命令如下所示:

    docker run registry-1.docker.io/node:6
    
    在我这边,config.json如下所示:

    docker run registry-1.docker.io/node:6
    

    我可以这样执行命令:

    docker run registry-1.docker.io/node:6
    

    docker中心中注册表的URI为

    更新

    如果使用证书文件对Docker注册表进行身份验证。然后,您应该执行一些步骤来验证客户端计算机中的Docker注册表

    One:

    在目录
    /usr/local/share/ca certificates/docker dev cert/
    中添加名为
    yourname.crt
    的证书文件。然后执行以下命令:

    sudo update-ca-certificates
    sudo service docker restart
    
    Secord:

    在目录
    /etc/docker/certs.d
    中创建一个与注册表同名的目录,例如myregistry.azurecr.io。然后在其中添加名为
    yourname.cert
    的证书文件。此外,还应将文件添加为.key,该文件是在创建证书文件时自动创建的

    然后您可以登录注册表并根据需要运行命令
    docker run registry-1.docker.io/node:6

    我这边有结果的截图


    对于您的问题,首先,您需要在~/.docker/config.json中拥有证书。然后,您可以从注册表中提取图像,而无需登录。然后,您可以执行该命令,而无需在之前拖动图像。对于您,命令如下所示:

    docker run registry-1.docker.io/node:6
    
    在我这边,config.json如下所示:

    docker run registry-1.docker.io/node:6
    

    我可以这样执行命令:

    docker run registry-1.docker.io/node:6
    

    docker中心中注册表的URI为

    更新

    如果使用证书文件对Docker注册表进行身份验证。然后,您应该执行一些步骤来验证客户端计算机中的Docker注册表

    One:

    在目录
    /usr/local/share/ca certificates/docker dev cert/
    中添加名为
    yourname.crt
    的证书文件。然后执行以下命令:

    sudo update-ca-certificates
    sudo service docker restart
    
    Secord:

    在目录
    /etc/docker/certs.d
    中创建一个与注册表同名的目录,例如myregistry.azurecr.io。然后在其中添加名为
    yourname.cert
    的证书文件。此外,还应将文件添加为.key,该文件是在创建证书文件时自动创建的

    然后您可以登录注册表并根据需要运行命令
    docker run registry-1.docker.io/node:6

    我这边有结果的截图


    您需要使用注册表服务器名称或URI运行映像。例如,使用命令
    docker run registry-1.docker.io/node:6
    。但首先,您应该已经有了证书。@CharlesXu我尝试了您提到的命令,但仍然出现了相同的证书错误。这意味着您在~/.docker/config.json文件中没有证书。您需要使用注册表服务器名称或URI运行映像。例如,使用命令
    docker run registry-1.docker.io/node:6
    。但是首先,你应该已经有了证书。@CharlesXu我试过你提到的命令,但是它仍然给出了相同的证书错误。这意味着您在~/.docker/config.json文件中没有证书。您能帮助我如何在文件中获得证书吗path@SaumyaGoyal您可以在config.json文件中手动添加证书。或者您可以登录注册表服务器一次,它会自动将证书添加到config.json中。我从chrome导出了“*.docker.io”的证书,并将其添加到config.json中,但仍然得到了相同的证书issue@SaumyaGoyal我更新答案。请看一看,然后再试一次。您能帮助我从哪里获取您在config.json中拥有的那些“auth”值吗?您能帮助我了解如何在中获取证书吗path@SaumyaGoyal您可以在config.json文件中手动添加证书。或者您可以登录注册表服务器一次,它会自动将证书添加到config.json中。我从chrome导出了“*.docker.io”的证书,并将其添加到config.json中,但仍然得到了相同的证书issue@SaumyaGoyal我更新答案。看一看,再试一次。你能帮我吗