如何修复docker-machine中客户端证书过期导致的连接异常
解决Docker Machine证书过期导致的连接错误
我之前在使用Docker for Mac 17.x版本时,也碰到过完全一样的证书过期问题——明明没碰过任何配置,突然所有机器都报x509: certificate has expired or is not yet valid错误。既然你已经排除了时钟、VPN这些常见诱因,那咱们直接从Docker Machine的证书问题入手,以下是亲测有效的恢复步骤:
单机器修复步骤
如果只有个别机器出问题,按这个流程操作:
- 先停止目标机器:
docker-machine stop <你的机器名> - 强制重新生成证书(加
-f自动确认,无需手动输入yes):docker-machine regenerate-certs -f <你的机器名> - 启动机器:
docker-machine start <你的机器名> - 重新加载机器的环境配置:
eval $(docker-machine env <你的机器名>) - 最后验证是否恢复正常:
docker version
批量修复所有机器
要是所有Docker Machine节点都出问题,用bash循环批量处理更高效:
# 遍历所有机器名,依次执行停止、重签证书、启动操作 for machine in $(docker-machine ls -q); do docker-machine stop $machine docker-machine regenerate-certs -f $machine docker-machine start $machine done # 修复完成后,重新加载当前使用机器的环境变量 eval $(docker-machine env <默认机器名,比如default>)
Docker for Mac专属注意事项
针对你用的17.12.0-ce版本,还有个额外要点:如果连本地的Docker内置虚拟机也出现这个错误,先重启Docker for Mac客户端,再执行上面的证书重签操作,大概率能解决问题。
额外备份建议
操作前可以先备份~/.docker/machine目录,防止意外情况:
cp -r ~/.docker/machine ~/.docker/machine_backup
内容的提问来源于stack exchange,提问作者rubyisbeautiful
相关产品推荐
相关产品推荐

