Docker NodeRed提交的容器不维护流程和模块

我正在使用通过docker部署的NodeRed进行项目,我想保存部署状态,包括流程,设置和新添加的模块,以便我可以保存映像并将其加载到完全复制的另一台主机上相同的NodeRed实例。

我使用以下方法创建了容器:

docker run -itd --name my-nodered node-red

实现流程并安装一些自定义模块后,在运行容器的情况下,我使用以下命令:

docker commit my-nodered my-project-nodered/my-nodered:version1
docker save my-project-nodered/my-nodered:version1 > tar-archive.tar.gz

在另一台机器上,我使用以下命令导入了图像:

docker load < tar-archive.tar.gz

并使用以下命令运行它:

docker run -itd my-project-nodered/my-nodered:version1

然后我获得一个带有默认/ data目录的香草NodeRed泊坞窗容器,仅维护数据目录上的文件。

我想念什么?我的/ data目录以及主目录中的settings.js文件是否可能被覆盖?在这种情况下,实现我的目标的最佳实践是什么?

非常感谢您

CARBONARI001 回答:Docker NodeRed提交的容器不维护流程和模块

提交将不起作用,因为您可以看到Dockerfile中定义了音量。

# User configuration directory volume
VOLUME ["/data"]

这使得不可能在该目录树中创建具有任何不同内容的派生图像。 (这是您无法使用预先填充的数据创建mysql或postgresql图像的相同原因。)

docker commit根本不考虑卷,因此您将获得未加载任何图像的不变图像。

您可以查看官方文档

管理用户数据

  

一旦您在Docker上运行Node-RED,我们需要确保   如果容器被销毁,添加的节点或流不会丢失。这个   通过将数据目录装入卷,可以持久保存用户数据   在容器外部。可以使用绑定安装或   命名数据量。

     

Node-RED使用容器内的/data目录存储用户   配置数据

nodered-user-data-in-docker

一种方法是将配置文件还原到另一台计算机上,例如backup-config

docker run -it -p 1880:1880 -v $PWD/backup-config/:/data --name mynodered nodered/node-red-docker

或者如果您想为回购填满,可以尝试

docker run -it --rm -v "$PWD/$(wget https://raw.githubusercontent.com/openenergymonitor/oem_node-red/master/flows_emonpi.json)":/data/ nodered/node-red-docker

本文链接:https://www.f2er.com/3096706.html

大家都在问