Docker 更新到 v1.7.0 后抱怨证书无效

Docker complains about invalid certificate after update to v1.7.0

更新到 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 fixes this issue, as described here

boot2docker 1.7.0 的选项

这似乎与网络接口在启动过程中出现的方式有关。以下选项可用于解决此问题。

选项 1

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

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 VM 中的 .profile 文件中:

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

此函数等待 eth1 界面最多 1 分钟。

选项 2

另一种选择似乎是

boot2docker delete
boot2docker init
boot2docker up

这将破坏 boot2docker VM - 您可能会丢失您所做的任何自定义设置。

只需运行使用此命令即可解决我的问题。这是 Docker 员工通过 GitHub 提出的。

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

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

我找到了以下 "easy" 替代方法。使用 shell alias:

alias docker="docker --tlsverify=false"

感谢Mark Duncan

来自 troubleshooting 指南:

docker-machine regenerate-certs default

docker-machine restart default

然后你就可以开始了,就像往常一样运行

eval $(docker-machine env default)