我已经实现了将文件保存到光盘的azure iotedge模块。 每次我更新到模块的新版本时,所有保存的文件都将丢失。如何更新我的模块并仍然保留旧文件?
答案 0 :(得分:0)
默认情况下,文件会保存到模块的docker容器中。如果您更新模块,则会创建一个新的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)也是如此。
答案 1 :(得分:0)
如果您需要从Windows转到Windows,则可以执行以下操作:
"createOptions": {
"HostConfig": {
"Binds": [
"C:\Temp\output:C:\app\files\"
]
}
}
我还没有弄清楚如何从Windows转到linux。