配置 Docker 使 SD 卡作为数据根(例如 WP400 搭配 PLCVisu)
本指南解释了如何重定向Docker的存储到SD卡,非常适合内部内存有限的设备(如WAGO WP400)。它包括准备、持续安装和结构化的故障排除。
软件需求
-
Docker
WAGO Docker å®è£ æå (搜索WP400 Docker IPK) -
PLCVisu 软件 (.ipk)
WAGO PLCVisu ä¸è½½é¡µé¢ -
根访问
通过SSH (ssh root@<wp400-ip>) 或串口终端
硬件需求
- SD卡或带USB适配器的SSD
- 最低等级为10级或UHS-I级
- 至少8 GB(建议16+ GB)
- 格式为
ext4或vfat(Linux兼容)
前提条件
挂载SD卡并准备Docker存储
1.识别SD卡设备
跑步:
lsblk
或者:
dmesg | grep sd
找类似/dev/mmcblk0p1或/dev/sda1这样的设备
### 2. Format the SD Card (if needed – this erases all data)
mkfs.ext4 /dev/sda1
调整设备名称以匹配你的系统
如果ext4不支持,可以使用mkfs.vfat
### 3. Create Mount Point and Mount the SD Card
mkdir -p /mnt/sdcard
mount /dev/sda1 /mnt/sdcard
请通过以下网站验证:https://doc.plcvisu.cloud/cn/downloads.html
df -h
4. 准备Docker Data Directory
mkdir -p /mnt/sdcard/docker
chmod 711 /mnt/sdcard/docker
5. 在更改配置前先停止使用 Docker
/etc/init.d/docker stop
6. 备份现有的 Docker 数据(可选)
mv /var/lib/docker /var/lib/docker.backup
7. 配置 Docker 将 SD 卡作为数据根节点使用
编辑或创建:
vi /etc/docker/daemon.json
插入:
{
"data-root": "/mnt/sdcard/docker"
}
保存并关闭。
8. 重新启动 Docker
/etc/init.d/docker start
9. 验证 Docker 存储路径
docker info | grep "Docker Root Dir"
预期结果:
Docker Root Dir: /mnt/sdcard/docker
可选:让挂载在重启后保持持久
编辑 /etc/fstab:
/dev/sda1 /mnt/sdcard ext4 defaults 0 2
⚠️ 确保启动时SD卡始终可用
使用mount -a来测试
重启后检查
重启后:
df -h | grep /mnt/sdcard
docker info | grep "Docker Root Dir"
如果是退回为/var/lib/docker,→检查 fstab和Docker启动时序
故障排查指南
| 症状 | 原因 | 解 |
|---|---|---|
Docker Root Dir 仍然是 /var/lib/docker |
SD卡安装得不够早 | 延迟 Docker 启动或使用 mount --bind |
mount: wrong fs type |
错误的文件系统格式 | 用mkfs.ext4格式化 |
设å¤ä¸æ²¡æå©ä½ç©ºé´ |
SD卡太小/安装错误 | 用df -h 检查一下,调整标清大小或正确安装 |
/mnt/sdcard/docker的 æé被æç» |
错误权限 | 跑 chmod 711 /mnt/sdcard/docker |
| Docker 无法启动 | 配置错误或缺少文件夹 | 检查/etc/docker/daemon.json和日志 |
最后注释
- 修改配置前请务必停止 Docker
- 运行 Docker 时不要取出 SD 卡
- 对于关键应用:使用工业级SD卡或外置固态硬盘
- 你可以通过恢复
/var/lib/docker.backup并编辑daemon.json来干净地恢复
⚠️ 确保启动时 Docker 启动前 SD 卡已挂载。
如果挂载太晚,Docker 会在/var/lib/docker中重新初始化。
在WP400上加载并运行Node-RED Docker Image。
这种方法允许你在没有互联网接入的情况下,使用预先下载的 .tar Docker 映像文件,在 WP400 上部署 Node-RED。
1.下载 Docker 镜像.tar文件(来自链接)
不要直接从 Docker Hub 获取,而是下载准备好的镜像文件:
把文件保存在你的开发电脑上。
2. 将 Docker 映像文件传输到 WP400 SD 卡(挂载目录)
你可以直接把 Docker 镜像转移到临时内存(/tmp),而是直接放在挂载在 WP400 上的 SD 卡上。这在图像较大且想避免内部存储耗尽时尤其有用。
窗
选项A – WinSCP(图形界面):
- 安装 [WinSCP](https://winscp.net)。
- 使用 SCP (
root@<wp400-ip>)连接到 WP400。 - 导航到挂载的SD卡目录,通常是
/mnt/sdcard。 - 将
node-red-arm327l.tar文件拖拽到“/mnt/sdcard”中。
选项B——带PuTTY(pscp)的命令行:
pscp C:pathtonode-red-arm327l.tar root@<wp400-ip>:/mnt/sdcard
macOS
使用终端:
scp ~/Downloads/node-red-arm327l.tar root@<wp400-ip>:/mnt/sdcard
Linux
使用任何终端:
scp /path/to/node-red-arm327l.tar root@<wp400-ip>:/mnt/sdcard
USB闪存盘(适用于所有作系统的替代方案)
如果无法通过网络传输:
- 将文件复制到U盘。
- 将USB插入WP400。
- 在WP400上,将其移到SD卡:
mount /dev/sda1 /mnt/usb cp /mnt/usb/node-red-arm327l.tar /mnt/sdcard umount /mnt/usb
文件存储在 /mnt/sdcard下后,继续步骤3:从SD卡加载Docker镜像
一旦文件在/tmp下可用,继续步骤3:在WP400上加载Docker Image
3. 在WP400上加载Docker镜像
SSH连接到你的WP400,运行:
docker load -i /tmp/node-red-arm327l.tar
这会把镜像加载到你的本地 Docker 注册表中。
4. 运行Node-RED容器
docker run -it -d -p 1880:1880 -v node_red_data:/data --name wago-nodered --restart unless-stopped node-red-arm327l:latest
✔ 确保镜像名(
node-red-arm327l ï¼latest)和docker images显示的一致。
????要用SD卡保存持久数据,可以把node_red_data替换成像/mnt/sdcard/nodered这样的完整路径。
访问Node-RED
在浏览器中打开:
http://<wp400-ip>:1880
你现在拥有了一个功能齐全的Node-RED实例,运行在WP400上,无需直接上网。