解决LEDE无法下载Docker环境的问题
Docker插件安装后,初始化时总是报错,提交数据失败!错误代码:-6
更新:
后续又捣鼓出一些解决方法,见这里:
0成本搭建假网站:解决LEDE无法下载Docker环境的问题之uhttpd
使用全局代*理 解决LEDE无法下载Docker环境的问题之http_proxy
分析
开始逐个分析,先看日志
提示:安装运行环境失败,你的网络可能有问题,请重试!
应该是哪里卡住了,shell看进程 ps -w | grep docker
,原来是wget时卡住了
进到docker运行环境的官网目录,https://download.docker.com/linux/static/stable/x86_64/
复制最新的docker:https://download.docker.com/linux/static/stable/x86_64/docker-18.09.3.tgz
手动在shell下执行
wget --no-check-certificate --timeout=8 --tries=2 https://download.docker.com/linux/static/stable/x86_64/docker-18.09.3.tgz
我去……这下载速度也是牛逼 ,而且还解析到了IPv6地址(本机使用了IPv6)
速度这么慢,难怪一直下载不动,卡在wget那里了。
思路
找到原因了,就知道怎么办了。思路如下:
1.修改/koolshare/scripts/docker_config.sh里的配置
结果:失败,这个脚本不是简单的shell脚本,而是可执行的Linux程序,没法编辑……
顺便吐个槽,如果Koolshare的这个docker插件控制脚本能写成开源的,就不会有这么麻烦了。正是因为它闭源,所以遇到问题只能逆向分析。差评!
所以这也是真·LEDE玩家鄙视koolshare版LEDE的原因,闭源
2.做一个假的download.docker.com
结果:成功
解决
1.搭建
手头有个阿里云香港VPS,添加网站 download.docker.com
然后随便添加一个SSL证书(因为脚本端wget加入了no-check-certificate参数,所以SSL证书可以随意添加)
网站根目录新建 /linux/static/stable/x86_64/
子目录,并在此路径下,将docker运行环境的官网目录整站下载下来
注:这里我测试了半天,插件好像不会自动分析最新的docker版本,它会指定 18.09.1
docker版本进行下载部署,而不是最新版。当我写这篇文章时,docker最新版为18.09.6
wget -nd -r -l1 --no-parent https://download.docker.com/linux/static/stable/x86_64/
到此,假的docker运行环境目录已部署完毕
2.修改LEDE host文件
添加一行 假网站的IP download.docker.com
,让路由器能将download.docker.com解析到假的服务器上,保存host使之生效
关闭网络的IPv6功能,避免其解析到IPv6地址上,我这里是PPPOE下的IPv6
shell端测试假网站是否生效
wget --no-check-certificate https://download.docker.com/linux/static/stable/x86_64/docker-18.09.3.tgz
回到docker插件页面,再次部署
完美解决!
17 条评论
【2019年08月18日 22:04:22】: ========================================================================
【2019年08月18日 22:04:22】: 创建容器名称:portainer
【2019年08月18日 22:04:22】: docker run -d –name portainer -p 9000:9000 -v /mnt/sdc5/docker/docker.sock:/mnt/sdc5/docker/docker.sock portainer/portainer
【2019年08月18日 22:04:22】: 创建失败!
创建portainer的时候每次都失败
运行状态 【2019年08月18日 22:04:25】 Docker进程运行正常! (pid: 10115)
你好,我的问题是docker插件系统重启后就失效显示进程未运行,您的会失效吗,急需办法,在线等您
@summer
lede的docker插件还是有各种问题,我的软路由基本一个月才重启一次,所以有些插件都是手动启用的,不过您可以试试添加启动命令,http://koolshare.cn/thread-154230-1-1.html,我之前就是这么弄的。
@Bug侠
貌似lede系统启动脚本根本就不执行,形同虚设,有个大佬给我写了个监测脚本,这次可以了
感谢楼主的回复与帮助。
下面是脚本教程
https://www.lanzous.com/i4aexwd
@summer
嗯嗯,不错不错,也算是变了个法子实现了自启,解决了就好。
其实只要把下载下来的最新版docker解压到设置的安装目录就行了,不用这么麻烦
@whogh
感谢提供最优解……拜谢……
@Bug侠
我lede下的docker安装目录为sdb1,即默认硬盘的根目录,我把下载的最新的docker的tgz文件和解压后的文件都放在sdb1的目录下,还是会报错,是不是最新下载的docker文件名需要修改?请教下是否了解?谢谢!
@kids
啊不好意思,这个方法我没验证。但是理论是可行的,我就用我的方法安装成功后就再没折腾过lede下的docker插件了。
@Bug侠
放屁了,多谢。改天再用你的办法试试。
@kids
哈喽~覆盖的方法我实验了一下,可以实现。https://bugxia.com/1279.html
@Bug侠
好使!多谢!
老哥,没法添加SSL证书啊,要域名验证!
@lilei9633
配置文件里可以直接写 listen 443 ssl;
老哥,要是没有VPS的,有没有其他办法,求教。
@老刘
其他方法暂时没考虑到,不过酷软里好像有搭建lnmp环境的插件,可以在路由器搭建个假网站,其他的就大同小异了。
@Bug侠
放弃了。。