在更新到v1.7.0后,Docker会抱怨无效的证书

在更新到Docker v1.7.0(以及boot2docker)后,运行docker ps时出现以下错误:

 x509: certificate is valid for 127.0.0.1, 10.0.2.15, not 192.168.59.103 

这是这个版本的一个已知的问题,我能做些什么来解决这个问题?

这是boot2docker 1.7.0版中引入的已知问题: https : //github.com/boot2docker/boot2docker/issues/824

更新到boot2docker 1.7.1

更新到boot2docker 1.7.1修复了这个问题,如下所述。

boot2docker 1.7.0的选项

这似乎与networking接口在启动过程中出现的方式有关。 下面的选项可以用来解决这个问题。

选项1

解决方法是运行以下序列,它添加代码以等待所有networking接口存在:

 boot2docker ssh sudo curl -o /var/lib/boot2docker/profile https://gist.githubusercontent.com/garthk/d5a17007c277aa5c76de/raw/3d09c77aae38b4f2809d504784965f5a16f2de4c/profile sudo halt boot2docker up 

来源(和下载的代码的更多细节): https : //gist.github.com/garthk/d5a17007c277aa5c76de

这已经解决了我的问题,但我必须通过VirtualBox UI停止boot2docker-vm以获得干净的启动。

Gist将以下内容添加到boot2docker虚拟机中的.profile文件中:

 wait4eth1() { CNT=0 until ip a show eth1 | grep -q UP do [ $((CNT++)) -gt 60 ] && break || sleep 1 done sleep 1 } wait4eth1 

这个function等待1分钟, eth1接口就会出现。

选项2

另一个select似乎是要做的

 boot2docker delete boot2docker init boot2docker up 

这将破坏boot2docker虚拟机 – 您可能会失去您所做的任何自定义设置。

只要运行这个命令就可以解决这个问题。 这是由Docker员工通过GitHubbuild议的。

boot2docker ssh sudo /etc/init.d/docker restart

不幸的是,每次启动boot2docker时都需要运行它。

我发现以下“简单”的替代工作。 使用shell别名

 alias docker="docker --tlsverify=false" 

感谢Mark Duncan 。

从故障排除指南:

 docker-machine regenerate-certs default docker-machine restart default 

然后你很好去,像往常一样运行

 eval $(docker-machine env default)