撰于 阅读 7

OpenWrt 24.10 版本与 lxc + podman 的配置详解

OpenWrt 24.10 版本的发布带来了许多更新,特别是在网络配置方面。随着 Linux 世界逐渐转向 nftables,Docker 仍然坚持使用 iptables,尚未迁移到 nftables。经过一年的努力,我在 OpenWrt 上成功运行了 rootless lxc + rootless podman 的组合。这主要得益于 podman 5.0 以后对 nftables 的完善支持,提供了开箱即用的体验。

我使用 OpenWrt 作为主机运行在我的 N100 小主机上,该主机有四个网口,分别用于不同的网络服务。eth0 连接光猫上网,eth1 连接光猫用于 IPTV,eth2 连接交换机提供内网服务,而 eth3 则为 lxc 容器独占,同样连接到交换机,模拟内网的一台独立小主机。

在编译 OpenWrt 时,需要选择 lxc 并在二级菜单中全选相关选项,确保必要的内核模块都已安装。同时,在 /etc/subuid 和 /etc/subgid 文件中添加 root:100000:200000,分配 20 万个 ID,以支持 lxc 容器和 podman 的需求。

在 lxc 配置文件中,需要确保某些行不被注释,并添加特定的挂载条目,如 proc 和 sys 挂载。同时,配置 idmap 以支持足够的用户和组 ID 映射。此外,还需要将 tun 设备直接传递给容器。

在 /etc/rc.local 中添加特定的命令来调整 tun 设备权限,并重新挂载 proc 和 sysfs 文件系统。这些步骤确保了 lxc 和 podman 在 OpenWrt 上的正常运行。

最后,选择合适的 lxc 容器发行版,确保内置的 podman 版本为 5.0 或以上,以及 netavark 版本为 1.10 或以上。这样,你就可以在 OpenWrt 上顺利运行 lxc 和 podman,享受容器带来的权限隔离和系统保护。


评论已关闭