防止在更新IotEdge模块时丢失文件

时间:2019-03-15 15:46:35

标签: docker azure-iot-edge

我已经实现了将文件保存到光盘的azure iotedge模块。 每次我更新到模块的新版本时,所有保存的文件都将丢失。如何更新我的模块并仍然保留旧文件?

2 个答案:

答案 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。