使用Docker Context连接Play With Docker执行命令时报EOF错误如何解决?
错误原因
- Play With Docker(PWD)平台的2375端口默认使用HTTPS协议提供Docker API服务,你创建context时使用了
tcp://前缀,会强制客户端用HTTP协议发起请求,服务端识别到协议不匹配会直接断开连接,触发EOF错误 - 创建context使用的PWD实例已过期销毁:PWD的临时实例最长会话时长只有4小时,超时后实例会被自动回收,连接已回收的实例地址就会返回EOF
- 本地网络存在代理、防火墙规则,拦截了本地到PWD服务端2375端口的连接请求
解决方案
- 修正context的连接协议
先删除已创建的错误context:
重新创建context,将地址前缀从docker context rm -f pwdtcp://替换为https://:
切换到新context后验证是否可用:docker context create --docker "host=https://ip172-18-0-89-c5e2kunnjsv000dgin8g@direct.labs.play-with-docker.com:2375" pwd
如果修改协议后仍报证书相关错误,可以新增跳过TLS验证的参数创建context:docker context use pwd docker psdocker context create --docker "host=https://ip172-18-0-89-c5e2kunnjsv000dgin8g@direct.labs.play-with-docker.com:2375,skip-tls-verify=true" pwd - 确认PWD实例有效性
打开PWD网页端查看对应实例是否仍在运行,如果实例已过期销毁,需要新建PWD实例,将创建context命令中的地址替换为新实例提供的Docker API地址 - 排查本地网络
关闭本地全局代理、防火墙拦截规则,确认本地网络可以正常访问direct.labs.play-with-docker.com的2375端口
内容的提问来源于stack exchange,提问作者Ali
相关产品推荐
相关产品推荐

