OpenWrt 作为一款嵌入式 Linux 系统,应用软件的范围自然无法与完整的桌面级系统相比,但是可以借助强大的容器引擎 Docker,极大的扩展各类附加应用功能,使得曾经的不可能变为可能!
接下来以 OpenWrt-Life 成品固件为例,讲解如何在 OpenWrt 上通过界面使用 Docker。
简要流程:
1。拉取EMBY镜像
(1)打开emby/embyserver -- Docker Image | Docker Hub 这个页面,根据介绍拉取像像
| 1 | docker pullemby /embyserver | | - | ------------------------------------------------------- |
进入OPENWRT-系统-TTYD终端,输入,即可拉取镜像
(2)创建容器
进入DOCKER-容器-新建-输入命令行,输入以下代码
docker run -d \
--name embyserver \
--volume /path/to/programdata:/config \
--volume /path/to/share1:/mnt/share1 \
--volume /path/to/share2:/mnt/share2 \
--net=host \
--device /dev/dri:/dev/dri \
--device /dev/vchiq:/dev/vchiq \
--runtime=nvidia \
--publish 8096:8096 \
--publish 8920:8920 \
--env UID=1000 \
--env GID=100 \
--env GIDLIST=100 \
emby/embyserver:latest
注意:--volume /path/to/programdata:/config \
/path/to/programdata按实际挂载路径写,例如 /mnt/sda1/config
--device /dev/dri:/dev/dri \ 表示直通了显卡,如果没有就删除,否则不能识别安装
删除 --device /dev/dri:/dev/dri \ --device /dev/vchiq:/dev/vchiq \ --runtime=nvidia \ 这三行
(3)在此之前一定要挂载好硬盘,注意挂载点,一定要点启用,否则无法挂载成功
准备工作
- 需要一台配备了 Intel CPU 的软路由(最好附带核心显卡)。
- 安装好 OpenWrt-Life 成品固件。
- 挂载足够用的存储设备(ext4格式)。如果不知道怎么格式化,请参阅:https://iyzm.net/openwrt/72.html
- 保持正常联网。
OpenWrt 安装 Docker
登录路由器管理界面,打开"系统"-"软件包",先点击"更新列表..."按钮,然后在过滤器输入框输入:luci-i18n-dockerman-zh-cn 检索中文界面软件包,接着点击安装按钮即可,等待软件安装完毕。
安装完毕后,刷新网页,即可看到新增的一级菜单"Docker"
- 注意:安装完毕后,请重启一次路由器系统,因为这个软件依赖的某些内核模块需要重启才能生效。
配置 Docker
首先打开 "Docker"-"概览",确认设置 "Docker 根目录" 是否需要调整,如果确认没问题,再勾选启用,然后点击"保存并应用"按钮以启动 Docker 。
本例中以部署 Emby 多媒体服务器为例,演示 OpenWrt 下常用的 Docker 配置方式,
打开 Emby 的 Docker 介绍页面:https://hub.docker.com/r/emby/embyserver 找到安装描述。
拉取镜像
可以看到 Docker 拉取命令显示为:docker pull emby/embyserver:latest
打开 OpenWrt 的 Docker 镜像管理界面,输入 emby/embyserver:latest 拉取镜像。
在 Docker 镜像管理界面输入要拉取的镜像名称。
等待镜像拉取完毕。
镜像文件下载完毕。
### 创建容器
打开 OpenWrt 的 Docker 容器界面,点击添加按钮,配置所需的容器参数。
按需修改各类容器参数,你可以把容器理解为一个虚拟机 Linux 系统,它有自己独立的各类系统目录,要想让容器能读写 OpenWrt 中的目录,就需要使用"绑定挂载"选项,将 OpenWrt 中的目录映射至容器内部的目录。
"绑定挂载"选项的书写格式例如:
/mnt/sda3/emby/config:/config
#表示将 OpenWrt 中的 /mnt/sda3/emby/config 映射至容器内的 /config
/mnt/sdb/video:/mnt/video
#表示将 OpenWrt 中的媒体文件目录 /mnt/sdb/video 映射至容器内的 /mnt/video
注意:使用英文冒号分隔两个路径。
本例中使用的容器为 Emby 多媒体服务器,可将 Intel 核心显卡分配给其使用,以提升视频转码效率。
在"高级选项"-"设备"选项处,输入:/dev/dri:/dev/dri
注意:无需手动创建目录,如果目录不存在,则程序会自动创建,你只需确认相关路径挂载点剩余空间是否充足,格式是否为 ext4
## 启动容器
直接在容器管理界面,勾选已经配置完毕的容器,点击启动按钮即可。
配置 Emby 多媒体服务器
经过以上步骤,Emby 服务器已成功运行,接下来配置 Emby 服务器即可, 根据上面的配置参数,Emby 的配置文件实际将存放在 /mnt/sda3/emby/config Emby 的媒体目录实际在 /mnt/sdb/video ,意思就是你只需要将视频文件等放入 /mnt/sdb/video 即可被 Emby 识别。
由 Emby 的 Docker 介绍页面显示的信息可知,Emby 默认使用 8096端口(HTTP)和 8920端口(HTTPS) 因为是初次使用,HTTPS 端口肯定不能用,因为 HTTPS 需要配置 SSL 证书后才能启用, 所以直接访问 HTTP 端口 8096 即可,浏览器打开例如:http://192.168.9.1:8096
注意:经过了上一步后,你可以关闭浏览器,重新打开就能显示中文界面了。
设置媒体库文件夹。
选择之前在 Docker 容器中配置的目录即可。
其它参数请自行按需配置,一路下一步直到完成。
配置完毕后,登录账号即可看到媒体库已扫描出的视频文件,本例中仅放置了一个视频文件用于测试。
补充说明
看了 Emby 的 Docker 介绍页面会发现还有另外一种网络配置,这种网络配置用于将容器接入 Docker 的虚拟子网中,以此与宿主机(OpenWrt)的局域网隔离开来,然后通过将 OpenWrt 的端口绑定至容器内部的端口,以进行有限的端口开放。
总结
经过本实例的操作与学习,你完全可以做到一通百通,各种 Docker 应用的配置一般大同小异,如果你要把 Docker 作为日常使用,建议使用 x86 软路由,最好使用带核心显卡的 Intel CPU,如果没有显卡,例如 Emby 这类多媒体应用日常使用中几乎会导致CPU 满载,使得日常使用体验极差,RAM 建议配置 4G 以上。
Docker 的容器界面你可以理解为虚拟机控制界面,可以随意创建和删除,可以使用同一个镜像创建多个容器,也就是可以做到一个程序多开使用。
当然 Docker 与真正的虚拟机还是不同的,Docker 属于轻量化的应用,性能方面比虚拟机要好一点,具体技术信息请前往 Docker 官网了解。