OpenWrt Docker 安装指南
通过在 OpenWrt 路由器上安装 Docker,您可以将您的路由器转变为一个多功能的迷你服务器,运行各种容器化应用程序。本指南将详细介绍如何在 OpenWrt 设备上安装 Docker Community Edition (CE)。
1. 前提条件
在开始之前,请确保您的 OpenWrt 设备满足以下要求:
- 硬件: 建议路由器或设备至少具有 1GB RAM 和足够的闪存存储(最好超过 16GB)。Docker 通常不支持所有基于 MIPS 的路由器,但它与 ARM、x86 或 x86_64 架构兼容。
- 外部存储: 由于许多 OpenWrt 设备的内部闪存有限,强烈建议使用外部存储(如 USB 驱动器或 SSD)来存储 Docker 镜像和容器数据。这通常需要配置 “extroot” 来扩展根文件系统。
- 互联网连接: 您的 OpenWrt 设备需要有效的互联网连接才能下载软件包。
- SSH 访问: 您需要通过 SSH 访问您的 OpenWrt 设备 shell。
2. 存储扩展 (Extroot – 如果需要)
如果您的设备内部存储有限,您需要配置 extroot 以使用外部 USB 驱动器或 SSD 来存储 Docker 相关数据。此过程涉及:
- 安装必要的软件包:
bash
opkg update && opkg install block-mount kmod-fs-ext4 e2fsprogs parted kmod-usb-storage - 连接并识别存储设备。
- 使用 ext4 等文件系统对磁盘进行分区和格式化。
- 配置 extroot 挂载条目 以及原始 overlay 的挂载条目。
有关设置 extroot 的详细说明,请参阅 OpenWrt 官方 extroot 文档。
3. 安装 Docker Community Edition
请按照以下步骤在您的 OpenWrt 设备上安装 Docker CE:
3.1 更新系统软件包
首先,更新软件包列表以确保您获得最新版本。
bash
opkg update && opkg upgrade
3.2 安装 Docker 及其依赖项
安装 Docker 守护程序 (dockerd) 和 Docker 命令行客户端 (docker)。
bash
opkg install dockerd docker
3.3 安装 LuCI Docker Web 界面 (可选)
为了方便通过 Web 界面管理 Docker,您可以安装 luci-app-dockerman。如果尚未安装,此软件包还将作为依赖项安装 dockerd 和 docker-compose。
bash
opkg install luci-app-dockerman
3.4 启用并启动 Docker 服务
启用 Docker 服务以使其在启动时自动运行,然后启动它。
bash
/etc/init.d/dockerd enable
/etc/init.d/dockerd start
3.5 验证安装
通过检查 Docker 版本来验证 Docker 是否正常运行。
bash
docker version
如果成功,您应该会看到 Docker 客户端和服务器的版本信息。
4. 配置 Docker 根目录 (如果使用外部存储)
如果您使用的是外部存储,您可能需要更改 Docker 的根目录。dockerman 中 Docker 的默认文件夹是 /opt/docker/。您可以将外部存储挂载到 /opt,或者在 LuCI 界面的 Docker > Overview 下更改 Docker 根目录。更改后,请记住重启 dockerd 服务。
5. 使用 Docker
Docker 安装完成后,您可以开始拉取镜像并运行容器。
5.1 拉取镜像
您可以使用命令行或 LuCI 界面从 Docker Hub 拉取镜像。
- 命令行:
bash
docker pull <image_name>
# 示例:
docker pull alpine - LuCI:
进入Docker > Images,在 “Pull Image” 框中粘贴镜像名称,然后单击 “Pull”。请注意,大型镜像的拉取在 LuCI 中可能会超时,因此对于较大的镜像,命令行通常更可靠。
5.2 运行容器
拉取镜像后,您可以运行容器。例如,运行一个轻量级的 Alpine Linux 容器:
bash
docker run -it alpine /bin/sh
您还可以使用 docker-compose 来定义和运行多容器 Docker 应用程序。
6. 重要注意事项
- 安全性: 在路由器上运行 Docker 会引入安全考虑。请确保您了解其含义,尤其是在将服务暴露到互联网时。
- 资源使用: 尽管 OpenWrt 本身很轻量,但 Docker 及其容器会消耗资源。请监控您设备的性能。
- 持久化存储: 对于需要持久化数据的容器,请确保配置卷以将数据存储在您的外部存储上。