前言
有朋友问我为什么不推荐在 OpenWrt 跑 Docker。
OpenWrt 本质上就是一个精简的 Linux 路由系统,设计目标就是稳定、高效地处理网络相关的任务。
它的重点是:拨号、NAT、防火墙、流控、DNS、分流、科学上网等等 —— 全都是“让设备能顺利上网”的功能。它虽然是 Linux,但不是通用 Linux,更不是为了跑一堆服务而设计的。当然,如果你只是跑一些很简单的容器,其实也可以简单用用。
我个人更推荐的方式是:现在很多人用 PVE 或 ESXi 来虚拟化系统,那就把 OpenWrt 跑在一个虚拟机里,专门处理网络,然后再开一个 Debian 或 Ubuntu 的虚拟机,专门跑 Docker 和服务容器。
这样分开最大的好处是:
- 出问题互不影响
- 哪边出故障都好排查好恢复
Docker 在通用 Linux 上用的人多,资料多,兼容好,操作也更方便
这并不是说 OpenWrt 跑不起 Docker,而是说:
OpenWrt 能跑,但不该扛那么多非路由职责的负担。
就像你不会用电饭锅烧水洗脚 —— 虽然能热水,但它根本不是为这个设计的。
教程开始
第一部分 安装 Docker
更新系统并安装基础工具
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release添加 Docker 的官方密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.asc如果你用的是 Debian,把命令里的 ubuntu 改成 debian 即可。
添加 Docker 的官方软件源
echo "deb [arch=$(dpkg -print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo ${UBUNTU_CODENAME:-$VERSION_CODENAME}) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null如果你是 Debian 用户,把地址中的 ubuntu 改成 debian,把后面的系统代号改成你对应的版本,比如 bookworm。
更新并安装 Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin启动 Docker 并设置开机自启动
sudo systemctl enable --now docker测试 Docker 是否安装成功
docker run hello-world可选操作:让当前用户使用 docker 命令不用每次输 sudo
sudo usermod -aG docker $USER然后重新登录一次或重启系统生效。以后使用 docker 命令就不需要加 sudo 了。
第二部分 安装 Portainer 图形管理面板
创建数据卷用于保存 Portainer 的数据
docker volume create portainer_data启动 Portainer 容器
docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce第三部分 配置防火墙放行端口
查看防火墙是否开启
sudo ufw status如果显示 inactive,说明防火墙未启用,可以跳过这一步。
如果显示 active,则继续执行下面的命令。
放行 Portainer 使用的端口
sudo ufw allow 9000
sudo ufw allow 8000第四部分 访问 Portainer 面板
打开浏览器,在地址栏输入:
http://你的服务器IP地址:9000
比如你服务器 IP 是 192.168.1.100,就输入:
http://192.168.1.100:9000
首次访问时,会提示你设置管理员账号密码。设置完成后,选择 “Local” 连接到当前 Docker 主机,就能进入管理界面了。
转载声明:
转载此文章请注明出处。
若本文内容侵犯了您的权益,请通过本站下方邮箱与我联系,我会尽快处理,谢谢!

发表回复