Docker容器未连接到https端点

Pet*_*fel 7 ssl https networking openstack docker

从docker容器里面,我正在运行

# openssl s_client -connect rubygems.org:443 -state -nbio 2>&1 | grep "^SSL"     

SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:error in SSLv2/v3 read server hello A
Run Code Online (Sandbox Code Playgroud)

这就是我得到的全部

我无法从docker容器中连接到任何https站点.容器在openstack vm上运行.vm可以通过https连接.

有什么建议?

UPDATE

root@ce239554761d:/# curl -vv https://google.com
* Rebuilt URL to: https://google.com/
* Hostname was NOT found in DNS cache
*   Trying 216.58.217.46...
* Connected to google.com (216.58.217.46) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
Run Code Online (Sandbox Code Playgroud)

然后它挂了.

而且,我现在正在获得间歇性的成功.

理智检查:

  • 更改docker ips并不能解决问题

  • docker容器在我的本地计算机上运行

  • docker容器在其他云上工作

  • Docker 1.10.0在vms中不起作用

  • Docker 1.9.1适用于虚拟机

Tar*_*haf 6

我得到了Docker社区的解决方案

OpenStack网络似乎使用较低的MTU值,并且自1.10以来 Docker不会从主机的网卡中推断出MTU设置.

要使用自定义MTU设置运行docker守护程序,您可以关注此博客文章,其中说:

$ cp /lib/systemd/system/docker.service /etc/systemd/system/docker.service
Run Code Online (Sandbox Code Playgroud)

在新文件中编辑一行,如下所示:

ExecStart=/usr/bin/docker daemon -H fd:// –mtu=1454
Run Code Online (Sandbox Code Playgroud)

1454的MTU值似乎与OpenStack相同.您可以使用ifconfig在主机中查找.

最后重启Docker:

$ sudo systemctl daemon-reload
$ sudo service docker restart
Run Code Online (Sandbox Code Playgroud)

  • 不要复制整个单元文件(包作者可能会更改),请考虑仅使用以下内容更新这一行: /etc/systemd/system/docker.service.d/fixmtu.conf 文件,其内容为: [Service] ExecStart= ExecStart=/usr/bin/dockerd -H fd:// --mtu=1454。不要忘记 systemctl daemon-reload 并重新启动 docker (2认同)