我可以在VM EFLOW (windows设备上的Azure IoT边缘)上的docker下运行Node-Red吗?&l



我部署了节点红色容器"物联网边缘设备模块"(nodered/node-red:latest)安装在Windows设备(EFLOW)上的Linux VM上的Azure IoT边缘设备上,根据我在Raspberry Pi上IoT边缘设备上的node-red部署的经验。

不幸的是,我遇到了以下错误日志的问题:

Error: EACCES: permission denied, copyfile '/usr/src/node-red/node_modules/node-red/settings.js' -> '/data/settings.js'
at Object.copyFileSync (node:fs:2817:3)
at copyFile (/usr/src/node-red/node_modules/fs-extra/lib/copy/copy-sync.js:73:6)
at onFile (/usr/src/node-red/node_modules/fs-extra/lib/copy/copy-sync.js:59:25)
at getStats (/usr/src/node-red/node_modules/fs-extra/lib/copy/copy-sync.js:51:44)
at handleFilterAndCopy (/usr/src/node-red/node_modules/fs-extra/lib/copy/copy-sync.js:36:10)
at Object.copySync (/usr/src/node-red/node_modules/fs-extra/lib/copy/copy-sync.js:29:10)
at Object.<anonymous> (/usr/src/node-red/node_modules/node-red/red.js:129:20)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32) {
errno: -13,
syscall: 'copyfile',
code: 'EACCES',
path: '/usr/src/node-red/node_modules/node-red/settings.js',
dest: '/data/settings.js'
}

我在Raspberry Pi上部署node-red IoT边缘设备时遇到了类似的问题。我在社区的帮助下解决了这个问题。我在EFLOW (Windows上的VM)上重复了同样的事情,但它不起作用。实际上,我修复了"Binds":

"Binds": [
"/home/iotedge-user/node-red:/data"
],

我也在这里描述了这个问题,尽管我没有得到任何像样的帮助。

此外,由于节点红色docker适用于特定架构(amd64, arm32v6, arm32v7, arm64v8和s390x),我还认为我的系统有问题,这是:

Virtualization: microsoft
Operating System: CBL-Mariner/Linux
Kernel: Linux 5.15.67.1-4.cm2
Architecture: x86-64
Hardware Vendor: Microsoft Corporation
Hardware Model: Virtual Machine

首先,这与CPU架构无关(x86-64与amd64相同),如果没有匹配的CPU arch,容器甚至无法启动。

这里的问题是主机操作系统上的文件权限,在这种情况下很可能是虚拟机中的Linux实例。

正如我在上一个问题中所描述的,在容器中的/data上挂载的主机(在本例中为/home/iotedge-user/node-red)上的任何路径都需要由uid 1000可写。如何设置取决于您对主机操作系统的访问权限。但是假设您可以在主机操作系统上获得终端,那么您可以运行以下命令:

sudo chown -R 1000:1000 /home/iotedge-user/node-red

这可能提示您输入用户密码以授予sudo访问权限。

最新更新