Apache/Nifi 1.12.1 Docker 图片问题

Apache/Nifi 1.12.1 Docker Image Issue

我有一个基于 apache/nifi:1.12.1 的 Docker 文件,想像这样扩展它:

FROM apache/nifi:1.12.1
RUN mkdir -p /opt/nifi/nifi-current/conf/flow

问题是,当我从 Linux 发行版(如 Ubuntu 和 CentOS)构建映像时,该文件夹并未创建。构建成功,我 运行 使用 docker run -it -d --rm --name nifi nifi-test 但是当我通过 docker exec 进入容器时,没有 flow 目录。

奇怪的是,当我通过 Windows 和 Docker 桌面构建图像时,flow 目录正在正常创建。我不明白为什么会这样。

我已经尝试过 USER nifiRUN chown ... 之类的方法,但仍然...

为方便起见,这是基本图像: https://github.com/apache/nifi/blob/rel/nifi-1.12.1/nifi-docker/dockerhub/Dockerfile

也看看这个: This is what looks like at the CLI

提前致谢。

通过查看提供的 dockerfile,您可以看到以下卷定义


那么如果你 运行

docker image inspect apache/nifi:1.12.1

因此,执行运行命令在conf目录下创建文件夹成功

BUT 当您 运行 容器安装卷时,它们会覆盖安装点下的所有内容 /opt/nifi/nifi-current/conf

在你的例子中是 flow 目录。

您可以通过编辑 Dockerfile 来测试它

FROM apache/nifi:1.12.1
# this will be overriden, by volumes
RUN mkdir -p /opt/nifi/nifi-current/conf/flow
# this will be available in the container environment
RUN mkdir -p /opt/nifi/nifi-current/flow

要解决这个问题,您可以

  1. 克隆您用作基础镜像的 Dockerfile(在 FROM) 和 手动删除 VOLUME 指令。然后构建它并 在您的 FROM 中用作基础。
  2. 你可以尽量避免在Dockerfile指定的挂载点下添加目录