环境准备

要在 OpenWRT 上部署 Docker,首先要确保安装了一些前置依赖。以下是我们需要的环境及其版本兼容性:

组件版本备注
OpenWRT19.07 及以上确保是适用于你设备的版本
Docker20.10 及以上支持 ARM 架构
LUCI18.06 及以上用于图形化管理

确保以上依赖都已安装。此外,根据你的硬件资源,确保设备具有足够的存储和内存来支持 Docker 的运行。

分步指南

接下来的步骤将帮助你逐步完成 Docker 的部署。

  1. 更新 OpenWRT 软件源
    通过 SSH 登录到 OpenWRT,执行以下命令:

    1
    opkg update
  2. 安装 Docker 和依赖包
    安装 Docker 及其必要依赖:

    1
    2
    opkg install dockerd
    opkg install docker-compose
  3. 启动 Docker 服务
    启动 Docker 服务并设置为开机自启:

    1
    2
    /etc/init.d/dockerd start
    /etc/init.d/dockerd enable

流程状态:

更新软件源安装Docker及依赖启动Docker服务

配置详解

接下来的步骤涉及 Docker 的配置。以下是需要创建的配置文件模板:

创建一个名为 docker-compose.yml 的文件,写入如下内容:

1
2
3
4
5
6
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"

yml 文件定义了一个简单的 Nginx 服务,映射到宿主机的端口 80。

验证测试

在完成上述步骤后,我们需要验证 Docker 是否正确部署。通过以下命令查看正在运行的 Docker 容器:

1
docker ps

预期结果为:

1
2
CONTAINER ID   IMAGE             COMMAND     CREATED   STATUS   PORTS     NAMES
abcd1234efgh nginx:alpine "/bin/sh ..." 4 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp web

为了更直观地理解数据流向,我们可以使用桑基图展示 Docker 网络与宿主机之间的连接:

1
2
sankey-beta
A[宿主机端口80] -->|映射| B[Docker Nginx]

优化技巧

为了使 Docker 部署更加高效,我们可以创建自动化脚本,简化操作。以下为 Bash 脚本示例,用于一键安装和启动 Docker:

1
2
3
4
5
6
#!/bin/bash
opkg update
opkg install dockerd docker-compose
/etc/init.d/dockerd start
/etc/init.d/dockerd enable
echo "Docker has been installed and started successfully."

排错指南

在部署过程中可能会遇到一些常见错误。下面是一些错误及其解决方案:

  1. 服务未能启动
    错误信息可能类似于:

    1
    Error starting daemon: Error initializing network controller: Error starting controller: Bridge bridge-nam...

    修正:

    1
    2
    - # Bridge bridge-name
    + # Ensure the necessary kernel modules are loaded
  2. 容器无法访问
    可能是端口未正确映射,检查 docker-compose.yml 配置,确保端口号一致。

排查路径如下:

有异常无异常服务启动失败检查服务日志查看配置文件查看网络设置


通过上述步骤,我们成功完成了在 OpenWRT 上一键部署 Docker 的过程,无论是基础配置还是效果验证,都能使你在实际应用中得心应手。希望这个教程能够帮助你顺利搭建自己的 Docker 环境。