视频教程 ➡️ https://www.bilibili.com/video/BV1fuc8eGEPa/

准备工作

检查系统时间是否正确。安装好docker

sudo date -s “YYYY-MM-DD HH:MM:SS”

【N1 Armbian】https://github.com/ophub/amlogic-s9xxx-armbian/releases/

sudo date -s "2025-01-14 16:01:00"
wget -qO pi.sh https://cafe.cpolar.top/wkdaily/zero3/raw/branch/main/zero3/pi.sh && chmod +x pi.sh && ./pi.sh

下载并解压rootfs.tar.gz

https://downloads.immortalwrt.org/releases/24.10.0-rc3/targets/armsr/armv8/

如果是 x86-64 则应该访问 https://downloads.immortalwrt.org/releases/24.10.0-rc3/targets/x86/64/

【如果是玩客云这类32位的】https://downloads.immortalwrt.org/releases/24.10.0-rc3/targets/armsr/armv7/

mkdir imm
cd imm
wget -O rootfs.tar.gz https://downloads.immortalwrt.org/releases/24.10.0-rc3/targets/armsr/armv8/immortalwrt-24.10.0-rc3-armsr-armv8-rootfs.tar.gz
gzip -d rootfs.tar.gz

创建一个Dockerfile文件

(粘贴下列可迅速获得带内容的Dockerfile文件 考虑到各位亲 对于vim编辑器是在不够熟练)
cat <<EOF >"Dockerfile"
FROM scratch
ADD rootfs.tar /
EOF

查看Dockerfile 具体内容

cat Dockerfile

FROM scratch
ADD rootfs.tar /

构建docker镜像

在Dockerfile所在目录执行 immortalwrt-image 是我们取的 docker镜像名称 叫什么都行。
docker build -t immortalwrt-image .

查看网卡名称

ip link show
假设网卡名称为eth0 (注意 有些设备的网卡名称为end0 要根据上述命令查看的)
假设你的主路由器网关是192.168.66.1
Docker 中创建一个 macvlan 网络
docker network create -d macvlan \
--subnet=192.168.66.0/24 \
--gateway=192.168.66.1 \
-o parent=eth0 \
macnet

不用开启混杂模式 因为macvlan 网络与 docker0 的桥接网络完全不同,它不依赖 docker0,而是直接与宿主机的物理接口

ip link set docker0 promisc on

打印docker中的macvlan网络是否创建成功
docker network ls

macvlan 的一个特性是宿主机无法直接与容器通信。如果你的需求是让宿主机与 OpenWrt 容器通信,你需要在宿主机上创建一个虚拟接口(通常称为 macvlan 子接口),并将其加入同一 macvlan 网络。

ip link add macvlan-shim link eth0 type macvlan mode bridge
ip addr add 192.168.66.2/24 dev macvlan-shim
ip link set macvlan-shim up

注意检查上述ip地址192.168.66.2 确保它没有被其他设备占用

  • macvlan-shim 是虚拟接口的名称,你可以自定义。

  • 192.168.66.2/24 是给宿主机虚拟接口分配的 IP 地址,应位于 192.168.66.0/24 子网内,且不冲突。

添加路由(如果需要) 如果宿主机需要通过 macvlan 网络访问容器,可以添加路由:

ip route add 192.168.66.0/24 dev macvlan-shim

devdevice 的缩写,用来指定路由条目所绑定的网络接口(设备)。

运行我们自己创建的docker 容器

docker run --name immortalwrt -d --network macnet --privileged immortalwrt-image:latest /sbin/init

immortalwrt 为docker容器名称

immortalwrt-image是docker镜像名称(上述docker build 所得)

————————————————————————************************————————————————————

运行后 ,进入容器,容器内就是immortalwrt 系统啦

docker exec -it immortalwrt sh

在ImmortalWrt 命令行里设置静态ip(vim编辑器)

vi /etc/config/network
config interface 'lan'
option ifname 'eth0'
option proto 'static'
option netmask '255.255.255.0'
option ipbassign '60'
option ipaddr '192.168.66.88'
option gateway '192.168.66.1'
option dns '223.5.5.5 1.1.1.1'

为了避免大家使用vim编辑器,你可以复制如下代码到命令

config interface 'lan'
option ifname 'eth0'
option proto 'static'
option netmask '255.255.255.0'
option ipbassign '60'
option ipaddr '192.168.66.88'
option gateway '192.168.66.1'
option dns '223.5.5.5 1.1.1.1'

上述代码中 192.168.66.88 是我设置的ip地址,你要根据自己主路由器的ip网段来调整。

重启ImmortalWrt的网络

/etc/init.d/network restart

如果imm没有网 就在宿主机再次执行一次

ip link set macvlan-shim up

luci-i18n-filebrowser-go-zh-cn

后记

在docker 版的immortalwrt中安装一些必备插件

opkg update
opkg install luci-i18n-ttyd-zh-cn
opkg install luci-i18n-filebrowser-go-zh-cn
opkg install luci-i18n-argon-config-zh-cn
opkg install openssh-sftp-server
opkg install luci-i18n-samba4-zh-cn

安装iStore商店(ARM64 & x86-64通用)

wget -qO imm.sh https://cafe.cpolar.top/wkdaily/zero3/raw/branch/main/zero3/imm.sh && chmod +x imm.sh && ./imm.sh

安装网络向导和首页(ARM64 & x86-64通用)

is-opkg install luci-i18n-quickstart-zh-cn