默认情况下,文件保存到模块的docker容器中。如果更新模块,则会创建一个新的docker容器,并丢弃包含文件的旧容器。
如果要保留文件,则必须将它们保存在docker容器之外。
为此,您必须将主机的文件夹绑定到模块的容器中。
您可以通过在部署模板中设置模块的createOptions来实现,如下所示:
“createOptions”: {
“HostConfig”: {
“Binds”: [
“/path/on/host/:/app/files/“
]
}
}
</code>
如果您将文件保存到
的
“./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)也是如此。