OpenWrt软路由(NanoPi For NAS All In One R2S ):固件扩容Docker磁盘和使用Docker

NO.1
内容修正

首先,上一篇文章推荐的固件要修正

参考文章

<<OpenWrt软路由(NanoPi For NAS All In One R2S ):固件安装和扩容(Squashfs)>>

作者sirpdboy固件的免费版本,可以安装Docker和安装Docker Compose,但是无法安装Dockerd,所以可以看到Docker的版本,但是无法启动和使用Docker(本身插件也默认没有Docker)

有Docker版本和全插件的,并不是免费的,所以日常网络软路由,可以试试这个固件,但是想使用Docker相关应用,就不推荐免费版固件了 

NO.2
更换固件

具体的固件这里不提供下载,在买R2S和R4S的时候咨询卖家客服即可

理论上接下来的扩容和Docker的安装使用,在openWrt上是通用的,大同小异

测试过三款固件

一个是恩山sirpdboy免费的固件(无法安装dockerd依赖,无法启动docker)

一个是NanoPi-R2S-rk3328(gihutb)(有docker,反复几分钟就死机一次,可能是电源也可能是固件问题)

一个是R2S本身的固件(应该和卖家一致)(目前已扩容docker磁盘,并且自带docker插件,可以安装docker compose,并且已经测试几个应用,成功运行,且拉取镜像5个多GB,说明对应扩容也没有问题)

上一篇文章的扩容,没有达到docker扩容的效果(本文也进行修正)

NO.3
刷入固件

前提条件

软件: balenaEtcher (下载地址:https://etcher.balena.io/)

硬件:TF卡(128GB)(搭配对应的USB读卡器)

安装balenaEtcher后,打开软件,插入读卡器读取TF卡

img

选择固件

img

img

选择磁盘

注意这个要特别注意,认真查看选中的磁盘大小,确认和TF卡大小一致

避免选中其他U盘或者本机磁盘,造成把电脑自身系统给格式化了

img

img

点击Flash开始刷入固件到TF卡

mac上需要输入密码

img

等待刷入完成

img

输入成功后会看到弹框提示不能识别

点击忽略或者推出(mac上建议点击退出)

img

这是完成的界面

img

NO.4
启动系统

把TF卡插入R2S,然后插入电源线,开启电源

此时建议不要插入网线R2S的Wlan和Lan口,避免影响其他路由

等待system红灯闪缩到红灯稳定,说明系统已经成功运行

注意

本文直接用R2S Lan(局域网),连接到电脑网线,发现无法识别网络

但是把R2S Lan(局域网),网线接入一个动态配置的路由器,然后电脑连接路由器的wifi是可以正常访问openWrt的

所以固件本身没有问题,但是要进行测试和设置,这里还要提前准备一个路由器

如果你的Lan和电脑网线可以正常连接识别,那么上面的注意事项可以略过

这个固件的默认管理后台地址:http://192.168.100.1

默认账户:root   默认密码:password

访问管理后台

img

进入主界面

可以看到左侧有Docker菜单(默认安装了docker)

img

NO.5
固件扩容(Docker)

这里的扩容,仅仅是对应Docker

点击菜单,系统->磁盘管理

对于TF而言,一般标识为/dev/mmcblk0,点击右侧对应的修改

img

找到最下面剩余空间比较大的磁盘,本文的为118GB左右

点击右侧的新建

img

新建后,多出来一个mmcblk0p3

点击对应的格式化

img

选择格式化为ext4(一定要选择ext4)

点击格式化,等待格式化成功

img

格式化成功后页面自动刷新

可以看到mmcblk0p3的文件系统变为了ext4

img

点击菜单,系统->挂载点

点击生成配置

img

可以看到挂载点列表,多了一个下图红框标识的内容

点击右侧对应的编辑

img

勾选启用

但是这个弹框并没有看到选项(/opt或者/opt/docker)

img

点击自定义区域

输入/opt,然后按Enter回车

点击保存

img

然后点击页面底部的保存并应用

img

页面自动刷新后

可以已挂载的系统,多了红框这个区域

img

点击磁盘管理

也可以看到(确认)多了红框这个挂载磁盘到/opt的标识

img

值得注意的是,扩容docker并不会扩容软件包或者别的系统区域

所以本文只针对docker扩容

img

NO.6
docker和compose安装

使用终端ssh进入openWrt

ssh [email protected]

可能遇到错误

Host key for 192.168.100.1 has changed and you have requested strict checking

是因为之前进入过同样的openWrt ssh,但是TF再次刷固件后,同样IP地址对应的 ssh的key和哈希对不上了,需要清除缓存,然后重新创建key

img

清除ssh缓存

ssh-keygen -R 192.168.100.1

img

再次ssh

首次需要创建key,输入yes即可

img

继续输入密码

img

ssh进入到openWrt

img

进入到/opt目录

cd /opt

查看docker版本

docker --version

可以看到默认的为V20.10.22

img

查看docker-compose版本

docker-compose --version

默认没有安装

-bash: docker-compose: command not found

img

安装docker-compose

下载docker-compose(aarch64)

curl -SL https://github.com/docker/compose/releases/download/v2.
20.3/docker-compose-linux-aarch64 -o /bin/docker-compose

复制以下文本(上述代码高亮好像地址有空格问题)

curl -SL https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-aarch64 -o /bin/docker-compose

下载成功后给与权限

chmod 777 /bin/docker-compose

然后检测docker-compose版本

docker-compose --version

可以看到安装成功

docker-compose版本为v2.20.3

img

NO.7
portainer安装

考虑到openWrt没有常规的linux命令和依赖库,所以需要一个可视化容器管理平台

因为扩容的磁盘目录是/opt

所以本文把所有有关docker的内容都放在/opt目录下

新建/opt/dsx2016/docker/portainer文件夹

mkdir -p /opt/dsx2016/docker/portainer

新建docker-compose.yml配置文件

vi docker-compose.yml

按一下i键,进入编辑编辑

img

右键复制并黏贴以下内容

version: "3"
services:
portainer:
image: portainer/portainer-ce:linux-arm64
container_name: portainer
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./ortainer_data:/data
ports:
- "3036:8000"
- "3037:9000"
- "3038:9443"

img

按一下Esc

输入:wq!

按Enter退出编辑并保存

img

拉取镜像并启动服务

docker-compose up

可以看到报错

open /opt/docker/tmp/GetImageBlob2396860121: no such file or directory

img

遇到这种情况有两种解决方式

1.先尝试重启docker

2.重启docker不行再尝试重启openWrt

重启docker

点击菜单,docker->概览

点击停止,重新启动

img

然后再次尝试docker-compose启动

这一次正常启动成功

img

开放端口

本文的portainer需要开放3037端口

点击菜单,网络-防火墙-通信规则

点击页面底部的添加按钮

img

如无特殊需求

输入名称和目标端口即可

然后点击保存

img

可以看到页面多了一个规则

img

NO.8
portainer使用

访问Ip:端口

输入用户名和密码,创建管理员账户

img

点击使用local本地环境

img

进入本地环境列表

img

后面的使用可以参考官方文档来

NO.9
Tips

到此为止

  1. 重新更换了R2S的固件

  2. 设置docker磁盘的扩容

  3. 安装docker-compose依赖

  4. docker部署可视化容器管理平台portainer

  5. 解决了docker莫名其妙的问题(重启docker)

注意

遇到死机重启等问题,请先确认TF卡的读写速度(c10以上),和电源供电(5v3a)等,其次查看温度和散热,最后关闭排查一些引起异常的插件

1G的内存适合做一些无数据自动化服务

如MQTT网关,消息通知,PT下载,静态网页登,后续再一一部署和测试

END

推荐阅读

<<树莓派4B(Raspberry Pi For NAS):搭建家用多功能NAS>>