【问题标题】:How to mount a single file in container in kubernetes/docker如何在 kubernetes/docker 的容器中挂载单个文件
【发布时间】:2019-01-15 09:25:14
【问题描述】:

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

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

这样做会引发以下错误:

您是否尝试将目录挂载到文件上(反之亦然)?查看 如果指定的主机路径存在并且是预期的类型

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

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

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

如何在 Kubernetes 中解决?

【问题讨论】:

  • 我认为您可以做的是为文件制作一个配置映射并将其挂载到 pod - stackoverflow.com/a/43404857/9705485
  • @RyanDawson 同意,但如果我们更新该文件,那么我们将不得不再次运行该命令以进行更改,然后重新部署它。这是真的吗?
  • 是的。您是否在本地机器上运行集群(例如 minikube)?如果是这样,我认为你是对的,你只能挂载目录(例如使用 hostPath github.com/kubernetes/minikube/issues/2#issuecomment-406279202)。

标签: docker kubernetes containers host mount


【解决方案1】:

答案已由@Ryan Dawson 提供。

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

ConfigMaps 允许您将配置工件与图像分离 内容以保持容器化应用程序的可移植性。

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

您可以像这样使用 subPath 将单个文件挂载到现有目录中。

【讨论】:

    猜你喜欢
    • 2017-11-26
    • 2021-11-21
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 2020-01-02
    相关资源
    最近更新 更多