默认情况下,文件保存到模块的docker容器中。如果更新模块,则会创建一个新的docker容器,并丢弃包含文件的旧容器。
如果要保留文件,则必须将它们保存在docker容器之外。 为此,您必须将主机的文件夹绑定到模块的容器中。
您可以通过在部署模板中设置模块的createOptions来实现,如下所示:
"createOptions": { "HostConfig": { "Binds": [ "/path/on/host/:/app/files/" ] } }
如果您将文件保存到 的 “./files/myfile.txt” 强> 在你的模块中,它实际上会保存到 的 “/path/on/host/myfile.txt” 强> 在托管模块的docker容器的机器上,更新模块后它仍然存在。
在启动模块之前,您必须手动在主机上创建文件夹。 并且您必须为moduleUser提供读/写访问权限。您可以这样做:
sudo chown 1000 / path / on / host
然后
sudo chmod u + rw / path / on / host
注意:由于其他iotedge docker容器的用户也具有UID 1000,因此他们也可以访问该文件夹。对于主机的第一个非root用户(通常也具有UID 1000)也是如此。
如果您需要从Windows转到Windows,您可以执行以下操作:
"createOptions": { "HostConfig": { "Binds": [ "C:\Temp\output:C:\app\files\" ] }
}
我还没想到的是如何从Windows转到linux。