首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker登录总是使用HTTP而不是HTTPS

Docker登录总是使用HTTP而不是HTTPS
EN

Stack Overflow用户
提问于 2018-12-04 16:14:54
回答 1查看 10.9K关注 0票数 3

我已经在vm中设置了一个码头注册服务器。服务器具有一个由CA签名的ssl证书,该CA位于我的windows可信根证书中。

为了访问注册表,我创建了一个ssh隧道,将本地端口5000转发到针对本地主机的vm :5000。如果我用浏览器在我的机器上打开https://localhost:5000,一切都会正常。证书被认为是有效的。

在vm上的shell中,docker登录非常正常。它要我的证件并把它们储存起来。我能够按预期的方式将图像推入注册表。

每当我试图从通过隧道连接的开发人员计算机登录时,我的本地码头似乎忽略了任何SSL:

代码语言:javascript
复制
C:\WINDOWS\system32>docker login https://localhost:5000
Username: ******
Password: ******
Error response from daemon: Get http://localhost:5000/v2/: dial tcp 127.0.0.1:5000: connect: connection refused

docker登录似乎使用HTTP而不是HTTPS,这是它应该做的。我搞不懂,如何强制码头登录使用SSL。

  • 我已经双倍地检查了本地docker-daemon配置,以确保我没有在任何地方定义“不安全的注册表”。
  • 我已经清除了我的个人资料中存储的凭据,以确保那里没有任何奇怪的事情发生。

任何建议都将不胜感激!

干杯,

科雷戈特

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-05 08:18:23

好吧我想明白了。

docker login localhost上的tl;dr引用运行守护进程的moby和,而不是windows-system

由于我们被迫使用windows 10作为操作系统,所以docker通过hyper-v / virtualbox / hypervisor使用moby来运行“本地”停靠守护进程。因此,当我在windows中键入docker login localhost:5000时,命令不是由我的机器运行,而是由驻留在vm中的守护进程运行。在这种情况下,"localhost“并不会重新显示到我的dev-system,而是会重新显示运行守护进程的vm。

为了解决这个问题,我不得不:

  1. 将我的ssh-隧道改为“接受来自其他主机的连接”(putty有一个复选框)
  2. 调用docker login hostname:5000 (其中hostname是vm可以解析和访问的开发机器的名称。您可以使用命令行中的hostname命令找到它。)

现在SSL、auth、push和push似乎如预期的那样工作。非常奇怪的错误行为,但这有点道理,因为没有运行witihn的注册表服务器-守护进程-vm。

我希望这篇文章能为别人节省一些时间。

干杯,

科雷戈特

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53617151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档