首页 > 解决方案 > apache/nifi docker:如何提交对新容器的更改

问题描述

我是 apache/nifi 的新手并使用以下命令运行它:

docker run --name nifi -p 8081:8080 -d apache/nifi:latest

然后拖了一些处理器。然后我尝试使用以下方法将它们保存为新图像:

 docker commit [container ID] apache/nifi:latest

但是当我运行新提交的图像时,它不会保存更改。如有错误请指教。提前致谢。

更新
起初我启动了 nifi:

docker run --name nifi -p 8081:8080 -d apache/nifi:latest

这是我在 Web UI 上添加的组: 在此处输入图像描述

我想保存容器,所以我使用以下命令提交:

docker commit 1e7 apache/nifi:latest2

我们可以在这里看到 2 个 nifi 图像: 在此处输入图像描述

然后我运行:

docker run --name newnifi -p 8080:8080 -d apache/nifi:latest2

检查更改是否保存在新图像中。但是 Web UI 是空的,并且该组不存在。 在此处输入图像描述

标签: dockerapache-nifi

解决方案


这是来自Apache Nifi官方松弛频道的讨论。

看起来流定义存储在flow.xml.gz目录中/conf。dockerapache/nifi映像将此文件夹定义为卷。

定义为卷的目录不会提交到从现有容器创建的映像。https://docs.docker.com/engine/reference/commandline/commit/#extended-description
这就是为什么处理器和组没有出现在新图像中的原因。

这些是要考虑的替代方案:

  1. 将文件复制flow.xml.gz到新容器。
  2. 导出流程模板(已弃用但仍可用)。
  3. 用于NiFi Registry存储您的流程定义,然后从那里导入。

推荐阅读