iStoreOS 跑 Docker 的关键是选对安装方式、数据目录和网络模式。文章给出商店、opkg、离线三种安装方式,建议数据放外置盘 /mnt/data/docker,网络按需选 bridge 端口映射或 macvlan,并用 nginx 容器完整验证。
iStoreOS 上跑 Docker,最容易卡住的不是“怎么装”,而是三件事:装在哪、数据放哪、网络怎么通。装法有好几种,网络模式有好几种,Docker 根目录也有不同放法,选错了要么空间很快爆,要么容器局域网访问不到。
这篇按“3 种安装方式 + 4 种网络模式 + 3 种磁盘位置”来讲,每一步都给命令和界面路径,最后用 nginx 容器做一次完整验证。
一、先确认你的环境
SSH 登录 iStoreOS,先看磁盘和 Docker 状态:
df -h
lsblk
block info
docker info 2>/dev/null | head
如果 docker info 报 command not found,说明还没装 Docker,从下一节开始。本文以 iStoreOS 24.10(opkg 包管理)为例;25.12 已切换到 apk,命令里的 opkg 要换成 apk,思路一样。
二、3 种 Docker 安装方式
方式 1:iStore 应用商店安装(推荐)
iStoreOS 后台 → iStore 应用商店 → 搜索 Docker → 安装 Docker 和 Docker Manager(LuCI 界面)。
装完后左侧菜单会出现“Docker”,里面有“概览 / 容器 / 镜像 / 网络 / 配置”等页面。这是最省事的方式,依赖和界面一次到位。
方式 2:命令行 opkg 安装
适合没有 iStore 或想自己控制版本的场景:
opkg update
opkg install dockerd luci-app-dockerman
/etc/init.d/dockerd enable
/etc/init.d/dockerd start
docker info
如果提示缺少依赖,按提示补装 kmod-* 和 libnetwork 相关包。装完刷新 LuCI,菜单里会出现 Docker。
方式 3:离线 .run / ipk 安装
适合路由器不能联网、或 iStore 里没有对应架构包的情况。下载与你的 iStoreOS 版本、架构匹配的包,然后:
# .run 包
sh docker-package.run
# .ipk 包
opkg install ./dockerd_*.ipk ./luci-app-dockerman_*.ipk
离线安装最容易遇到依赖缺失,建议优先用 iStore 或 opkg 在线安装。
| 安装方式 | 难度 | 适合谁 |
|---|---|---|
| iStore 商店 | 低 | 绝大多数用户,推荐 |
| opkg 命令 | 中 | 想控制版本、没有 iStore |
| 离线 .run / ipk | 中高 | 不能联网、特殊架构 |
三、3 种磁盘位置:Docker 数据放哪
Docker 的镜像、容器、卷都放在 data_root 目录。这个目录放在系统盘,还是外置盘,直接决定你能跑多少容器。
位置 1:系统盘默认目录
默认通常是 /opt/docker,具体以 Docker → 配置 → Docker 根目录 显示的为准。
优点是零配置;缺点是 iStoreOS 根分区通常不大,几个大镜像就能把系统盘撑满,甚至影响系统更新。只适合轻量、临时测试。
位置 2:外置盘挂载到 /mnt/data(推荐)
给 iStoreOS 加一块数据盘(PVE/ESXi 加虚拟磁盘,或物理机加 SSD),挂载到 /mnt/data,再把 Docker 根目录设为 /mnt/data/docker。
分区、格式化、挂载:
opkg update
opkg install parted e2fsprogs block-mount
parted -s /dev/sdb mklabel gpt mkpart data ext4 0% 100%
mkfs.ext4 -L data /dev/sdb1
mkdir -p /mnt/data
block info /dev/sdb1
在 LuCI 的“系统 → 挂载点”里添加挂载,或者在 /etc/config/fstab 写入:
config mount
option uuid '你的-UUID'
option target '/mnt/data'
option enabled '1'
挂载并确认:
mount -a
df -h /mnt/data
mkdir -p /mnt/data/docker
然后改 Docker 根目录:
- 界面:Docker → 配置 → Docker 根目录,填
/mnt/data/docker,保存并重启 Docker - 命令:编辑
/etc/config/dockerd,设置option data_root '/mnt/data/docker',然后/etc/init.d/dockerd restart
验证:
docker info | grep -i "root dir"
df -h /mnt/data
位置 3:独立分区 / 独立 SSD 专供 Docker
如果你跑大量镜像、数据库、下载容器,建议单独一块 SSD 或独立分区,挂载到 /mnt/docker,Docker 根目录直接设为 /mnt/docker。
步骤和位置 2 一样,只是挂载点换成 /mnt/docker。独立盘的好处是:系统盘和 Docker 数据彻底分离,重装系统不影响容器数据,性能也更稳定。
迁移已有 Docker 数据:先停 Docker,复制数据,再改 data_root:
/etc/init.d/dockerd stop
mkdir -p /mnt/data/docker
tar -C /opt/docker -cf - . | tar -C /mnt/data/docker -xf -
# 改 data_root 后
/etc/init.d/dockerd start
注意:不要把 Docker 根目录设成 /data/docker 这类会被 iStoreOS 自动挂成 overlayfs 的目录,容易出现“只有 2GB、重启就回退”的问题。统一用 /mnt/data/docker 或 /mnt/docker,并确保 fstab 已启用开机挂载。
| 磁盘位置 | 容量 | 风险 | 适合场景 |
|---|---|---|---|
| 系统盘 /opt/docker | 小 | 容易撑满系统盘 | 临时测试 |
| 外置盘 /mnt/data/docker | 大 | 低 | 绝大多数用户,推荐 |
| 独立分区 /mnt/docker | 大 | 低 | 重度容器、数据库、下载 |
四、4 种网络配置方式
方式 1:默认 bridge + 端口映射(最常用)
Docker 默认创建 docker0 网桥,容器拿到 172.17.0.0/16 的地址,通过端口映射对外提供服务:
docker run -d --name web -p 8080:80 nginx:alpine
浏览器访问 http://iStoreOS的IP:8080。优点是简单、隔离好;缺点是要记端口,容器没有独立局域网 IP。
方式 2:自定义 bridge(改网段)
如果 172.17.0.0/16 和你的内网冲突,可以在 Docker 配置里改默认桥接:
option bip '172.20.0.1/16'
或者界面:Docker → 配置 → 默认桥接,填 172.20.0.1/16,重启 Docker。之后容器会使用新网段,端口映射方式不变。
方式 3:macvlan(容器拿独立局域网 IP)
适合需要容器像局域网设备一样被访问的场景,比如旁路由、Home Assistant、下载器。先开启网卡混杂模式,再创建 macvlan 网络:
ip link set eth0 promisc on
docker network create -d macvlan
--subnet=192.168.11.0/24
--gateway=192.168.11.1
-o parent=eth0 macnet
运行容器并指定 IP:
docker run -d --name web
--network macnet --ip 192.168.11.50
nginx:alpine
局域网其他设备可以直接访问 192.168.11.50。
注意:parent 要填实际接局域网的网卡(常见是 eth0 或 br-lan);Wi-Fi 网卡通常不支持 macvlan;部分固件需要关闭桥接过滤或调整防火墙。macvlan 容器和宿主机默认不能直接互访,需要额外加 macvlan shim 或走局域网 IP。
方式 4:host 网络(性能最好)
容器直接使用宿主机的网络栈:
docker run -d --name web --network host nginx:alpine
优点是性能好、端口不用映射;缺点是容器和宿主机抢端口,隔离性差。适合明确知道端口占用、对性能敏感的服务。
| 网络模式 | 容器 IP | 访问方式 | 优缺点 |
|---|---|---|---|
| 默认 bridge | 172.17.x.x | 宿主机 IP:端口 | 简单、隔离好;要记端口 |
| 自定义 bridge | 自定义网段 | 宿主机 IP:端口 | 避免网段冲突 |
| macvlan | 局域网 IP | 直接访问容器 IP | 像独立设备;配置复杂 |
| host | 宿主机 IP | 直接使用宿主端口 | 性能好;端口冲突 |
五、一步步实战:装 Docker + 挂数据盘 + 跑 nginx
- 装 Docker:iStore → 搜索 Docker → 安装 Docker 和 Docker Manager。
- 加数据盘:PVE/ESXi 给虚拟机加一块磁盘,按第三节分区、格式化、挂载到
/mnt/data。 - 改数据目录:Docker → 配置 → Docker 根目录填
/mnt/data/docker,保存并重启 Docker。 - 确认目录:
docker info | grep -i "root dir"应显示/mnt/data/docker。 - 跑测试容器:
docker run -d --name web -p 8080:80 nginx:alpine。 - 验证:浏览器打开
http://iStoreOS的IP:8080,看到 nginx 欢迎页即成功。 - 检查:
docker ps、df -h /mnt/data,确认容器运行、磁盘有空间。
六、常见问题
- 改了 data_root 重启又变回去:检查
/etc/config/dockerd是否保存成功,以及目标磁盘是否已开机自动挂载。 - Docker 目录只有 2GB:不要用
/data/docker这类 overlayfs 目录,改用/mnt/data/docker。 - macvlan 容器访问不了外网:检查 parent 网卡、网关、子网是否和 LAN 一致,网卡是否开启 promisc。
- 端口映射打不开:检查 iStoreOS 防火墙是否放行对应端口,容器是否监听 0.0.0.0。
- 镜像拉取慢:在 Docker 配置里加国内镜像加速地址,或使用代理。
七、怎么选
| 你的情况 | 建议 |
|---|---|
| 刚接触 Docker | iStore 安装 + 默认 bridge |
| 要长期跑多个容器 | 外置盘 /mnt/data/docker + 自定义 bridge |
| 容器要像局域网设备一样访问 | macvlan |
| 性能优先、端口固定 | host 网络 |
| 重度使用、数据重要 | 独立 SSD + /mnt/docker |
总结
iStoreOS 上 Docker 的配置可以拆成三个维度:3 种安装方式(iStore、opkg、离线包)、4 种网络模式(bridge、自定义 bridge、macvlan、host)、3 种磁盘位置(系统盘、外置盘、独立分区)。新手直接选“iStore 安装 + 外置盘 /mnt/data/docker + 默认 bridge”最稳;需要容器独立 IP 再上 macvlan;追求性能再用 host。
最后提醒:改 Docker 根目录前先停容器,迁移前备份数据,磁盘一定要确认开机自动挂载,否则重启后容器数据可能“消失”。
- 文章名称:iStoreOS Docker 教程:3 种安装、4 种网络、3 种磁盘位置
- 文章永久网址:https://www.997wan.com/istoreos-docker-install-network-storage/
- 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长 997笔记 进行删除处理。
- 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
- 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
- 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
- 如无特别声明本文即为原创文章仅代表个人观点,版权归《997笔记》所有,欢迎转载,转载请保留原文链接。