Openwrt下挂docker版甜糖 - tuhaiyang/soft GitHub Wiki

环境:
U盘或硬盘(大于等于32G的U盘或其它存储设备。要求是能在N1的usb2.0上稳定运行并且U盘的写入速度大于宽带的上传速度。上传大的建议上硬盘,U盘一般写入速度普遍7-10m/s)
Arm设备(刷好带docker的openwrt固件)

旁路由或普通接入设备挂甜糖方案:一个能使用upnp或DMZ的主路由+arm甜糖设备(未配置网络的解决方法:当upnp不生效的时候可以看教程后面通过端口转发的解决方法,如果是小白的直接用dmz指定挂甜糖的ip)
主路由或单臂上挂甜糖的方案:arm主路由或单臂路由设备即可(未配置网络的解决方法:由于主路由或单臂路由上挂甜糖,upnp是没有办给自己建立端口映射的,请按照后面的端口转发教程)主路由或单臂上挂甜糖的方案必须走端口转发的步骤

基础教程开始(以N1盒子为例)

0.打开upnp(通用步骤)
注意这里的打开upnp是指打开你的宽带拨号的路由器的upnp。每个人的路由器不一样的就不做演示了。一般百度都能找得到。

1.U盘挂载(通用步骤)
umount /mnt/sda1/ 先取消挂载
mkfs.ext4 /dev/sda1 把U盘格式化ext4格式
将U盘插入到N1上,然后进入N1后台-系统-挂载点进行设置,请看下面图片教程将U盘挂载到/mnt/ssd1(这一步主要是想让大家的存储设备都挂载 到/mnt/ssd1这个路径上,小白不要乱修改路径,采用uuid挂载的好处在于不会因为热插拔或重启设备导致挂载路径发生改变)

2.重启设备

3.下载docker镜像并运行新容器(通用步骤) --已开启阿里云仓库镜像加速
利用putty或N1的Openwrt固件自带的TTYD终端连接N1的SSH。
按顺序执行以下命令:
docker run -v /mnt/ssd1:/mnts -d --name ttnode --net=host -i -t --privileged=true --restart=always registry.cn-hangzhou.aliyuncs.com/744287383/linux_ttnode:latest /start.sh #第一次执行命令需要下载镜像。如果下载镜像非常慢的,请按下CTRL+C来中断下载,然后再次执行这条命令重新下载 #/mnt/ssd1为硬盘的挂载路径,:/mnts这个冒号和路径的不能改动,ttnode为容器的名字。

docker logs ttnode #命令中ttnode是指容器名,改成你自己的容器名。执行改命令可以获取绑定甜糖的二维码和甜糖服务的端口号,甜糖app扫码即可绑定设备

这一步容易出现的错误有两点,第一点是:提示无法连接链接 检查docker是否运行,
第一点解决方法:出现这个问题大多数是因为你的openwrt是U盘启动的,没有把openwrt写入emmc中。还有一种可能是你的docker没启动,大多数是前者的问题
第二点是:提示docker的存储空间不足,
第二点解决方法:导致这个问题出现的原因是你走了docker初始化的那个教程。大多数固件自带的docker已经是在运行的了,不需要再初始化。重新刷一次固件直接走本教程就好)
出现报错了,要把错误信息复制到百度翻译,这样你就知道报错是什么原因了。
执行完之后是这样子的,不太一样也没关系,只要不报错就好:

执行到这里,你的甜糖服务端就算是挂起来了,需要等待5分钟后才能绑定设备。
4.手机甜糖客户端APP绑定N1设备(通用步骤)
U盘需要一直插在N1上,因为甜糖需要将缓存写入U盘。
需要等待20分钟后绑定的设备的状态才能从获取状态信息变成优质网络。如有发现重启设备uid发生变化的请使用进阶教程。。
如果你绑定的设备出现 未配置网络 的字样,请看下面的解决方法

未配置网络的解决方法(端口转发):
这个方法是给那些upnp不能生效但又不想用DMZ导致端口全开的人使用。(小白直接用dmz得了)
这个方法很好的解决了DMZ把所有端口都给了甜糖设备的问题,所以upnp不生效也可以通过这个方法解决单宽带多开问题。
疑惑解答:经过测试,如果缓存的文件没有动过手脚的话,这三个端口号是不会发生改变的。即使容器删掉再建都不会变(ip不变,mac不变下),所以不要去动缓存文件哟,会导致端口发生变化哟。
运行下面的命令
方法1:
docker logs ttnode #ttnode 参数是容器名。注意:只需要运行这句命令就可以查看到端口和绑定设备的二维码

方法2:
docker exec -it ttnode /bin/bash #该命令是进入ttnode容器的命令。ttnode是容器名称
ifconfig #可以查看容器eth0的ip
apt-get update #刷新软件库
apt install lsof #该命令是安装lsof工具命令
lsof -Pnl +M -i4 #这是查看程序占用端口的命令

注意:端口转发是在宽带拨号的那个路由器上进行的操作,每个路由器的端口转发的界面都不一样
甜糖容器限制内存的方法(防止机器跑死)

docker update ttnode --memory-swap -1 -m 1080M #1080M是指1G内存,这个根据自己实际情况来定夺!

docker stats 执行查看

Docker常用命令:
docker pull 镜像名称 #拉去镜像

docker ps -a #查看容器列表

docker stats #查看运行中容器对硬件资源的占用情况。

docker exec -it 容器名称 /bin/bash #进入容器命令

exit #退出容器命令

docker rm -f 容器名称 #强制删除容器

docker images #镜像列表

docker image rm -f 镜像id #强制删除镜像

docker network ls #查看网络模式

docker network rm 网络名称 #删除网络模式

docker restart 容器名称 #重启容器

docker stop 容器名称 #暂停容器