Gl.iNet Flint 2: Installing Docker

Recently, I found myself faced with the decision of choosing a new router for home use. As a long-time fan of GL.iNet routers, I naturally turned to their home product line. GL.iNet is a Chinese company that produces routers pre-flashed with OpenWrt out of the box—no manual flashing or technical tinkering required. What I especially appreciate is their intuitive, user-friendly web interface, which makes advanced networking features accessible even to non-technical users. But if you want to go deeper, the full LuCI interface and command-line are always just a few clicks away—ready for customization whenever you’re ready.
Flint 3 vs Flint 2
The recently released Flint 3 supports Wi-Fi 7, but it only has 2×2 MIMO. In contrast, the Flint 2 offers 4×4 MIMO with Wi-Fi 6 — which actually delivers higher real-world speeds in most home environments. Additionally, the Flint 2’s CPU is faster than the Flint 3’s. Since I don’t currently own any Wi-Fi 7 devices, I decided that the Flint 2 will be more than sufficient for the next 2–3 years. Here are the full technical specifications side by side (Flint 3 vs Flint 2):

Okay, as far as we can tell from the specs, the inclusion of 1 GB DDR4 RAM and 8 GB eMMC storage seems excessive for a router’s typical workload — after all, the GL.iNet Flint doesn’t need that much CPU power, memory, or storage just to route traffic. But here’s the interesting part: the SoC includes dedicated hardware network acceleration, which offloads networking tasks from the CPU. That means the remaining resources — the extra RAM, storage, and processing headroom — are essentially sitting idle.
Why not put them to good use?
Instead of running a separate Raspberry Pi to host home applications like File Browser, Home Assistant, or other services, why not run them directly on the router? At the very least, it’s worth a try.
Installing Docker
First, I ran into an issue: the kmod-dm
package — required for Docker installation — was missing on GL.iNet’s stable firmware releases. Those builds are still based on the outdated OpenWrt 19.07 branch, which lacks modern package support.
So, I switched to the native OpenWrt 24 firmware — and to my surprise, it’s built on the latest OpenWrt 24.x branch, includes the GL.iNet web interface, uses the proprietary MediaTek Wi-Fi drivers (because the open-source alternatives are unstable and cause connectivity issues), and usees OWRT's repos instead of GL's— where kmod-dm
is now readily available.
All I had to do was download the firmware image (4.8.2-op24 at the time of this article) and flash it via the System → Upgrade tab in the web UI

After that, let’s SSH in and install Docker
opkg update
opkg install dockerd luci-app-dockerman
After a successful installation, the Docker tab appears in LuCI, offering a clear overview of running containers and even allowing basic configuration — which I personally prefer to handle via CLI, but it’s still handy to have.

Congratulations! Docker is now working on OpenWrt. In the next article, we’ll try running a simple FileBrowser container.