kubernetes/docker 如何在容器中挂载单个文件

How to mount a single file in container in kubernetes/docker

我有一个文件要挂载到容器中。该文件存在于 conf 文件夹中,该文件夹还包含其他文件,但我只想装载的文件是 helper.conf。在 docker 中执行此操作:

docker run -it -v /path/to/dir/:/path/inside/container --name mycontainer dockerimage

这样做会引发以下错误:

Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

为了解决这个问题,我在 conf 中创建了另一个名为 config 的文件夹,并使用了下面一行:

docker run -it -v /path/to/dir/config:/path/inside/container --name mycontainer dockerimage

这很好用。 kubernetes 也是如此。是否不可能只从其他文件也存在的目录中挂载单个文件。我为此使用了错误的关键字吗?

如何在 Kubernetes 中解决?

@Ryan Dawson已提供答案。

在容器(在 Kubernetes 中)中挂载单个文件的最佳方法是使用 ConfigMap:

ConfigMaps allow you to decouple configuration artifacts from image content to keep containerized applications portable.

在这种情况下,可以使用 ConfigMap 来创建资源,这将使我们能够将配置与容器映像分开。由于配置是一组键值对,它将允许将其公开为可以放入容器或卷内的环境变量。创建 ConfigMap 后,您必须创建一个 pod,您可以在其中指定一个 ConfigMap,它可以使用它来获取必要的值。 在您的情况下,如 Joel B and Tommy Nguyen specified in this Stack Overflow question :

You could use subPath like this to mount single file into existing directory.