将 OpenWrt Rootfs 打包为 Docker 镜像

·2 min read·BIGWONG Studio
DockerOpenWrt

openwrt-x86-64-generic-rootfs.tar.gz 打包为 Docker 镜像,用于旁路由部署。

  1. 获取 OpenWrt rootfs
  1. 重命名文件OpenWrt.tar.gz

  2. 创建 Dockerfile

FROM scratch
ADD OpenWrt.tar.gz /
EXPOSE 80 443 22
CMD ["/sbin/init"]
  1. 构建镜像
docker build -t myopenwrt .

此时镜像已经可用,但默认的防火墙和 IP 配置会导致网络不通。需要更新以下配置文件。

  1. 将以下文件保存到 Dockerfile 同级目录
文件 用途
turboacc 关闭流量卸载
dhcp 关闭 DHCP
firewall 旁路由防火墙规则
inittab 启动服务
network 容器 IP、网关、DNS
rc.local 启动时重写 resolv.conf
resolv.conf DNS 配置

注意: 部分上级路由的 NAT 实现方式不同。如果 OpenWrt 本身正常但下游设备无法上网,请在 OpenWrt 防火墙设置中开启 IP 伪装(MASQUERADE)。如果不开启也能正常使用,则保持关闭。

  1. 替换 Dockerfile 内容
FROM scratch
ADD OpenWrt.tar.gz /
COPY turboacc /etc/config/turboacc
COPY dhcp /etc/config/dhcp
COPY firewall /etc/config/firewall
COPY network /etc/config/network
COPY resolv.conf /root/resolv.conf
COPY rc.local /etc/rc.local
COPY inittab /etc/inittab
EXPOSE 80 443 22
CMD ["/sbin/init"]
  1. 重新构建镜像
docker build -t myopenwrt .
  1. 运行并测试旁路由