无法通过SSL在Windows上使用Docker提取Docker映像

时间:2018-06-28 09:21:48

标签: docker ssl windows-10

我使用docker engine 2.0.0.0-win77(28777)。在我的macOS上,我已经成功地从公司的私有Docker注册表中提取了映像。然后,我想在Windows计算机上执行此操作。在做任何事情之前,我有:

> docker pull <company.docker.url>/<some image>
Error response from daemon: Get https://<company.docker.url>/v2/: x509: certificate signed by unknown authority

然后,我将证书导入Windows用户证书存储中。 现在我有:

> docker pull <company.docker.url>/<some image>
Error response from daemon: Get https://<company.docker.url>/v2/: remote error: tls: handshake failure

在失败之后,我尝试了:

  • 将证书导入到我的Windows全局证书存储中。
  • 将文件client.certclient.keyca.crt复制到我的Windows 10中:

    • C:\ProgramData\Docker\certs.d\<company.docker.url>\
    • C:\Users\<user>\.docker\certs.d\<company.docker.url>\

可悲的是,我仍然得到这个:

> docker pull <company.docker.url>/<some image>
Error response from daemon: Get https://<company.docker.url>/v2/: remote error: tls: handshake failure

还有两件事要注意:

  • 如果我切换到Windows容器,则可以成功登录或提取图像,只有在使用Linux容器版本时,该操作才会失败。
  • 我的私人证书由中间证书签名,并且中间证书包含在我的client.cert中。

我读过一些参考文献:

5 个答案:

答案 0 :(得分:0)

我会尝试两件事:

  • 您是否尝试过: docker登录,然后再提取图像?
  • 重新启动客户端并重复。

答案 1 :(得分:0)

我在Windows上也遇到此错误。就我而言,重新启动docker守护程序很有帮助。

答案 2 :(得分:0)

建立与company.docker.url的TLS连接时遇到问题。可能的问题:

  • company.docker.url仅允许使用Linux容器不支持的密码。使用https://github.com/drwetter/testssl.sh测试company.docker.url,并将检测到的密码列表与Linux容器支持的密码列表进行比较。 (我猜Linux容器=一些Hyper-V VM,您可以在其中直接调试TLS连接)。

  • 叶子和中间证书的
  • 证书顺序必须按照您的证书文件中的特定顺序形成正确的证书链-来自Golang文档https://golang.org/pkg/crypto/tls/#LoadX509KeyPair

      

    证书文件中可能包含继叶子证书之后的中间证书,以形成证书链。

答案 3 :(得分:0)

上周当我与docker纠缠时,程序说您需要Windows 10专业版,而且我只有家庭版,因此无法正常工作,请检查您的Windows 10版本。

答案 4 :(得分:0)

就我而言,我们的Sophos防火墙阻止了访问。我直接连接到互联网,并且可以正常工作。我必须问我的同事,为什么它被阻止了。