有人问过我NAS的Docker是否可以部署Openwrt,可以!!! 市面大部分的NAS都可以,只要它预装了Docker的都可以!

本人用的是飞牛小主机,我就用飞牛举例子吧!

用到的镜像是zzsrv/OpenWrt,原版教程是使用主机模式网络设置,他不能与飞牛(宿主机)网络互访,为了解决这个问题,使用 Docker 默认桥接网络部署的op,桥接宿主机网络进行互联。

先看zzsrv/OpenWrt镜像原教程(进入SSH安装)

使用主机模式网络

1、打开网卡混杂模式,其中eth0根据ifconfig命令找到自己的本地网卡名称替换

sudo ip link set enp1s0 promisc on
​

2、创建名称为macvlan的虚拟网卡,并指定网关gateway、子网网段subnet、虚拟网卡的真实父级网卡parent(第一步中的本地网卡名称)

docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.1 -o parent=enp1s0 macnet
​

3、查看虚拟网卡是否创建成功,成功的话能看到名称为“macnet”的虚拟网卡

docker network ls
​

4、拉取镜像,可以通过阿里云镜像提升镜像拉取速度

docker pull registry.cn-hangzhou.aliyuncs.com/zzsrv/openwrt:latest
​

5、创建容器并后台运行

docker run --restart always --name openwrt -d --network macnet --privileged zzsrv/openwrt /sbin/init
​

6、进入容器内部环境

docker exec -it openwrt bash
​

7、根据自己实际情况修改网络配置,修改完成后保存配置

vi /etc/config/network
​

8、退出容器内部环境,在宿主机环境执行重启容器命令

docker container restart openwrt
​

使用 Docker 默认桥接网络

先在Docker的镜像仓库下载zzsrv/OpenWrt镜像

图片1.png

仓库下载不了的可以用上面的命令拉取:

#SSH 拉取镜像命令
docker pull registry.cn-hangzhou.aliyuncs.com/zzsrv/openwrt:latest
​

1.不在Docker里面部署,打开SSH 链接你的飞牛,

用下面的命令部署(SSH就不截图了,不懂的找度度。。)

要ROOT权限,sudo -i进入再运行代码

sudo docker run -d --name=openwrt \
--restart=always \
--privileged \
--network=bridge \  # 强制使用 Docker 默认桥接网络
-p 8081:80 \  #为了后面可以访问op,8081端口映射可以改自己想要的
-v /lib/modules:/lib/modules \
zzsrv/openwrt /sbin/init
​

部署成功会显示一串数字字母,如图:

图片2.png

  1. 进入容器内部环境(与上面的第六、七步一样)

#1.进入容器OP内部环境
docker exec -it openwrt bash

#2.输入以下代码进入OP修改网络配置
vi /etc/config/network
​

修改参考下面:

config interface 'lan'
    option proto 'static'
    option netmask '255.255.0.0'    # 修改为 255.255.0.0,匹配 Docker 桥接网络
    option ip6assign '60'
    option ipaddr '192.168.0.8'     # 删除旧 IP
    option ipaddr '172.17.0.2'      # 设置为 Docker 桥接网络内的 IP
    option gateway '192.168.0.1'    # 删除旧网关
    option gateway '172.17.0.1'     # 设置为 Docker 桥接网关
    option dns '192.168.0.1'       # 删除旧 DNS
  option dns '8.8.8.8 114.114.114.114'  # 使用公共 DNS 或者你的网关地址、本地网络运营商的DNS均可
    option device 'br-lan'
​

注:方向键移动到需要修改的地方,按i 开始修改,修改完Esc 退出修改,键盘输入:wq 退出。

3.重启网络服务

#在容器内执行,重启OP网络配置
/etc/init.d/network restart
​

4.按ctrl+p+q退出容器内部环境,在宿主机环境执行重启op

docker container restart openwrt
​

有重启OP失败的,可以在飞牛nas界面,打开Docker里面重启或者关机,再打开。

这样就可以用飞牛的IP访问OP了 示例:http://192.168.1.111:8081