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.
我有一个文件要挂载到容器中。该文件存在于 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.