再健壮的程序也避免不了崩溃的一天。
这两天很多甜糖用户恐怕都很桑心,不少新用户生生被折磨出一身本领,甜糖小编在此表示很抱歉,相关补偿措施很快会出炉,客服也一天到晚在帮用户重新部署设备中。
但是裸程序运行终究是避免不了宕机的一天,所以小编在此强烈建议各位都使用Docker部署甜糖,目前很多第三方Docker镜像都已经支持更新,并且也已经更新到最新版的甜糖运行程序,大家也可以尝试。甜糖官方在几个月前也已经推出了官方Docker镜像,官方Docker镜像也很大程度上借鉴了优秀的第三方镜像,并在此基础上增加了更多便于调试、维护的功能,如非特殊需要,建议优先使用官方镜像。
下面我们以群晖nas为例,介绍如何在群晖可视化操作界面部署甜糖Docker镜像。
首先我们需要先通过群晖的套件中心,安装Docker。

打开Docker,点击【注册表】,搜索ttnode。

其中【tiptime/ttnode】就是官方Docker镜像,我们也可以看到甜糖相关镜像已经很多了,再次感谢高手大大们的无私奉献!
选择官方Docker下载完成后,我们可以在【映像】(同镜像)中找到刚下载好的镜像。点击新增。
勾选启用资源限制,根据个人需求限制内存大小,对自己设备性能自信的也可以不勾选。容器名称请起一个独特点的,黑群晖如果和其他人重名有可能会出现uid相同,从而导致无法绑定的问题!

点击高级设置,勾选启用自动重新启动

点击存储空间-添加文件夹,设置甜糖的缓存目录

装载路径直接填【/mnt/data/ttnode】

最后是在网络标签页,勾选使用【使用与Docker Host相同的网络】,点击应用即可

最后我们在【容器】页面,就能看到刚刚部署好的容器了,可以通过右侧的开关运行或停止容器
至此,群晖Nas上的甜糖就部署成功了!通过甜糖APP在局域网发现该设备即可!当然不要忘了开启Nas上层路由器及光猫的Upnp哦。
其他包括Openwrt、爱快等系统上的Docker部署也大同小异,大家自己尝试即可!
一、 通过 host 模式部署(单实例)
sudo docker run -d \
-v /mnt/host/dir:/mnt/data/ttnode \
-v /var/run/docker.sock:/var/run/docker.sock \
--name ttnode \
--hostname ttnode \
--net=host \
--restart=always \
--memory=2g \
--cpus=1.5 \
tiptime/ttnode:latest
参数解释
-v /mnt/data/ttnode:/mnt/data/ttnode
(可自行修改本机缓存目录) /mnt/host/dir 表示本机缓存目录, /mnt/data/ttnode docker 内部缓存目录不需要修改-v /var/run/docker.sock:/var/run/docker.sock
支持自动更新--name ttnode
容器名称--net=host
(单实例不推荐修改) 目前推荐 docker host 模式,就是 docker 网络环境与设备环境一致,适合单拨。--hostname ttnode
(不推荐修改) ttnode uid 由 mac 地址和 hostname 决定,mac 地址和hostname 不变,ttnode uid 才能不变。mac 地址是主机地址了,所以指定 hostname 给容器,就可以固定 uid 了。--restart=always
(不推荐修改) 自动重启,除非 docker 出错--memory=2g
限制内存 2g--cpus=1.5
限制 cpu 核心数
二、 通过脚本部署 maclvan 模式(支持多实例)
wget https://gitee.com/jimyfar/ttnode_auto_deploy/raw/master/setup_docker.sh
sudo chmod +x setup_docker.sh
# 第一次运行
# --eth 网卡
# --cache_dir 缓存目录
# --ttnode_count ttnode docker实例数
sudo ./setup_docker.sh --eth=eth0 --cache_dir=/mnt/ttnode --memory=1g --cpus=1.5 --ttnode_count=2
# 之后运行用下面这行即可,保证 mac 地址不变
sudo ./setup_docker.sh # 直接读取配置文件
配置文件在 /etc/ttnode/config.txt # 包含 容器名 hostname mac地址等信息
三、 查看 ttnode 状态
sudo docker container ls # 查看所有容器
浏览器
sudo docker inspect 容器名 -f "{{json .NetworkSettings.Networks.macnet.IPAddress }}" # 查看容器ip
http://容器IP:1024 # 浏览器 查看二维码 端口
命令行
sudo docker logs -f 容器名 # 查看二维码 端口
删除 ttnode
sudo docker rm -f 容器名 # 删除容器
检查 ttnode 挂载
docker inspect -f '{{ .Mounts }}' 容器名
# 预期 [{bind /mnt/host/dir /mnt/data/ttnode true rprivate} ......]
# 左边是本机挂载目录 /mnt/host/dir ,右边必须是 /mnt/data/ttnode