Docker 部署 OpenWRT 教程:简单易用 – wiki基地

Docker 部署 OpenWRT 教程:简单易用

OpenWRT,一个基于 Linux 的开源路由器操作系统,以其高度的可定制性和强大的功能,深受广大网络爱好者的喜爱。它不仅能让你的路由器摆脱厂商固件的限制,还能让你拥有更多高级功能,比如流量控制、VPN 服务器、Adblock 等。

然而,直接在路由器上刷入 OpenWRT 存在一定的风险,例如硬件兼容性问题、刷机失败导致变砖等。为了避免这些风险,同时享受 OpenWRT 的强大功能,我们可以利用 Docker 技术,在容器中运行 OpenWRT,从而实现零风险、易部署的体验。

本教程将详细介绍如何使用 Docker 部署 OpenWRT,让你轻松搭建一个功能强大的软路由,摆脱硬件限制,体验 OpenWRT 的魅力。

一、 为什么选择 Docker 部署 OpenWRT?

在深入教程之前,让我们先了解一下 Docker 部署 OpenWRT 的优势:

  • 零风险部署: Docker 容器是隔离的,不会影响宿主机的操作系统。即使 OpenWRT 容器出现问题,也不会影响你的宿主机运行,避免了直接刷机带来的硬件风险。
  • 易于管理: 使用 Docker Compose 可以轻松管理和配置 OpenWRT 容器,包括网络设置、端口映射、存储卷等,所有配置都集中在一个文件中,方便备份和迁移。
  • 灵活性: Docker 容器可以在任何支持 Docker 的平台上运行,包括 Linux、Windows 和 macOS。这意味着你可以在各种设备上体验 OpenWRT,例如电脑、服务器、甚至是 NAS 设备。
  • 资源隔离: Docker 容器可以限制 CPU、内存等资源的使用,避免 OpenWRT 占用过多资源,影响宿主机的性能。
  • 快速部署和更新: 通过 Docker Hub 拉取 OpenWRT 镜像,可以快速部署 OpenWRT 容器。更新 OpenWRT 版本也非常简单,只需拉取新的镜像并重新启动容器即可。
  • 多 OpenWRT 实例: 可以在同一台宿主机上运行多个 OpenWRT 实例,每个实例拥有独立的网络配置和功能,满足不同的网络需求。
  • 试验性环境: 可以轻松创建 OpenWRT 容器作为试验性环境,测试各种配置和插件,而无需担心影响实际使用的路由器。

二、 准备工作

在开始部署之前,请确保你已经满足以下条件:

  • 安装 Docker: 你的操作系统需要安装 Docker。 Docker 官方网站提供了详细的安装指南,请根据你的操作系统选择合适的安装方式:https://docs.docker.com/get-docker/
  • 安装 Docker Compose (可选): 虽然可以直接使用 Docker 命令运行 OpenWRT 容器,但使用 Docker Compose 可以更方便地管理和配置容器。 Docker Compose 通常会随 Docker 一起安装,如果没有,可以参考 Docker 官方文档进行安装:https://docs.docker.com/compose/install/
  • 网络环境: 你需要了解你的网络环境,包括网关地址、DNS 服务器等。

三、 部署步骤

下面我们将详细介绍如何使用 Docker 部署 OpenWRT。

步骤 1:拉取 OpenWRT 镜像

首先,我们需要从 Docker Hub 拉取 OpenWRT 镜像。 Docker Hub 是一个 Docker 镜像的公共仓库,里面包含了各种各样的镜像。

在终端中执行以下命令:

bash
docker pull jerrykuku/openwrt-lean:latest

这条命令会从 Docker Hub 下载 jerrykuku/openwrt-lean:latest 镜像。 jerrykuku/openwrt-lean 是镜像的名称, latest 是标签,表示下载最新版本的镜像。

你可以根据自己的需求选择其他 OpenWRT 镜像,例如:

  • jerrykuku/openwrt-lean:x86_64-generic:适用于 x86_64 架构的设备。
  • jerrykuku/openwrt-lean:armv7l:适用于 ARMv7l 架构的设备,例如树莓派。

步骤 2:创建 Docker Compose 文件 (可选)

为了更方便地管理 OpenWRT 容器,我们可以创建一个 Docker Compose 文件。 Docker Compose 文件是一个 YAML 文件,用于定义 Docker 容器的配置,包括镜像、端口映射、存储卷、网络设置等。

创建一个名为 docker-compose.yml 的文件,并添加以下内容:

yaml
version: "3.8"
services:
openwrt:
image: jerrykuku/openwrt-lean:latest
container_name: openwrt
hostname: OpenWRT
privileged: true # 必须,OpenWRT 需要访问硬件资源
network_mode: "host" # 必须,使用 host 网络模式
# ports: # host网络模式不需要端口映射
# - "80:80" # OpenWRT Web 管理界面
# - "22:22" # SSH 访问
environment:
- TZ=Asia/Shanghai # 设置时区
- PASSWORD=password # 设置 Web 管理界面的密码
restart: always

代码解释:

  • version: "3.8":指定 Docker Compose 文件的版本。
  • services::定义服务列表。
  • openwrt::定义名为 openwrt 的服务。
  • image: jerrykuku/openwrt-lean:latest:指定使用的镜像。
  • container_name: openwrt:指定容器的名称。
  • hostname: OpenWRT:指定容器的主机名。
  • privileged: true非常重要,必须设置为 true。OpenWRT 需要访问宿主机的硬件资源,例如网络接口,才能正常工作。
  • network_mode: "host"非常重要,必须设置为 host。使用 host 网络模式,OpenWRT 容器将直接使用宿主机的网络,无需进行端口映射,简化了网络配置。
  • ports::由于使用了 host 网络模式,因此不需要进行端口映射。如果使用其他网络模式,例如 bridge,则需要进行端口映射,将容器内的端口映射到宿主机的端口。
  • environment::设置环境变量。
    • TZ=Asia/Shanghai:设置时区为上海。
    • PASSWORD=password:设置 Web 管理界面的密码。请务必修改为自己的密码。
  • restart: always:设置容器在退出时自动重启。

步骤 3:启动 OpenWRT 容器

在包含 docker-compose.yml 文件的目录下,执行以下命令:

bash
docker-compose up -d

这条命令会启动 OpenWRT 容器,并将其在后台运行。

如果不想使用 Docker Compose,可以直接使用 Docker 命令启动容器:

bash
docker run -d --name openwrt --hostname OpenWRT --privileged --network=host -e TZ=Asia/Shanghai -e PASSWORD=password jerrykuku/openwrt-lean:latest

步骤 4:访问 OpenWRT Web 管理界面

在浏览器中输入宿主机的 IP 地址,即可访问 OpenWRT Web 管理界面。 默认端口是 80。

使用之前设置的密码登录。

步骤 5:配置 OpenWRT (重要)

登录 OpenWRT Web 管理界面后,你需要进行一些基本的配置,才能让 OpenWRT 正常工作。

  • 配置网络接口: 这是最重要的一步。你需要配置 OpenWRT 的网络接口,才能让它连接到你的网络。由于使用了 host 网络模式,OpenWRT 将直接使用宿主机的网络接口。你需要根据你的网络环境配置 LAN 口和 WAN 口。 一般来说,你需要将LAN口设置为你的内网IP地址,并设置一个与你现有路由器不同网段的IP地址,避免冲突。 WAN口通常不需要配置,因为OpenWRT容器是作为旁路由运行的。
  • 配置 DNS: 在 “网络” -> “接口” -> “LAN” -> “高级设置” 中,配置 DNS 服务器。 可以使用公共 DNS 服务器,例如 Google DNS (8.8.8.8, 8.8.4.4) 或 Cloudflare DNS (1.1.1.1, 1.0.0.1)。
  • 配置防火墙: OpenWRT 默认启用了防火墙,你需要根据你的需求配置防火墙规则。
  • 安装插件: OpenWRT 拥有丰富的插件库,你可以根据自己的需求安装各种插件,例如 Adblock、VPN 服务器、流量控制等。

步骤 6:将宿主机设置为 OpenWRT 的网关 (重要)

为了让网络流量经过 OpenWRT 容器,你需要将宿主机设置为 OpenWRT 的网关。

具体操作方法取决于你的网络环境和需求。 例如,你可以将宿主机的 IP 地址设置为局域网内其他设备的网关。 也可以在你的主路由器上设置静态路由,将特定的流量转发到宿主机的 IP 地址。

四、 常见问题及解决方案

  • 无法访问 OpenWRT Web 管理界面:
    • 确保 OpenWRT 容器已经启动。
    • 检查宿主机的防火墙是否阻止了对 80 端口的访问。
    • 确认你的浏览器没有缓存旧的 IP 地址。
  • OpenWRT 无法连接到网络:
    • 检查 OpenWRT 的网络接口配置是否正确。
    • 确认宿主机的网络连接是否正常。
    • 检查 DNS 设置是否正确。
  • CPU 占用率高:
    • 尝试限制 OpenWRT 容器的 CPU 使用率。
    • 检查是否有插件占用过多 CPU 资源。
  • 内存占用率高:
    • 尝试限制 OpenWRT 容器的内存使用率。
    • 检查是否有插件占用过多内存资源。
  • 如何更新 OpenWRT 版本:
    • 拉取新的 OpenWRT 镜像: docker pull jerrykuku/openwrt-lean:latest (或其他你需要的镜像)
    • 停止并删除旧的容器: docker stop openwrt && docker rm openwrt (或使用 Docker Compose: docker-compose down)
    • 使用新的镜像重新启动容器: docker run -d ... (或使用 Docker Compose: docker-compose up -d)

五、 总结

通过本教程,你已经学会了如何使用 Docker 部署 OpenWRT。 Docker 部署 OpenWRT 具有零风险、易部署、灵活性强等优势,让你能够轻松搭建一个功能强大的软路由,体验 OpenWRT 的魅力。

希望本教程对你有所帮助。 祝你使用愉快!

六、 高级用法 (可选)

  • 使用 OpenWRT 作为 VPN 服务器: 可以在 OpenWRT 上安装 VPN 服务器,例如 OpenVPN 或 WireGuard,以便安全地访问你的家庭网络。
  • 使用 OpenWRT 进行流量控制: 可以使用 OpenWRT 的流量控制功能,限制不同设备的带宽使用,确保关键应用的流畅运行。
  • 使用 OpenWRT 进行广告拦截: 可以安装 Adblock 插件,拦截广告,提升上网体验。
  • 使用 OpenWRT 作为 DNS 服务器: 可以配置 OpenWRT 作为本地 DNS 服务器,加速域名解析,并可以添加自定义的 DNS 记录。

这些高级用法需要一定的 Linux 和网络知识,你可以参考 OpenWRT 的官方文档或其他相关资料进行学习。 祝你玩得开心!

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部