一尘不染

将单个文件从NFS docker卷挂载到容器中

docker

示例(为简便起见,省略了许多选项):

version: "3"
volumes:
  traefik:
    driver: local
    driver_opts:
      type: nfs
      o: "addr=192.168.1.100,soft,rw,nfsvers=4,async"
      device: ":/volume/docker/traefik"
services:
  traefik:
    volumes:
      - traefik/traefik.toml:/traefik.toml

这是错误的,因为没有名称名称的卷,这traefik/traefik.toml意味着该卷名称必须是文件的完整路径(即,您不能在该卷名称后附加路径)?

尝试设置device: ":/volume/docker/traefik/traefik.toml"只会返回not a directory错误。

有没有办法将单个文件安装到容器中?


阅读 443

收藏
2020-06-17

共1个答案

一尘不染

您不能在命名卷中装入文件或子目录,源是命名卷或主机路径。NFS本身,以及您将在Linux中挂载的大多数文件系统,都要求您挂载整个文件系统,而不是单个文件,当下降到inode级别时,这通常是一件好事。

我能想到的剩下的选项是将整个目录挂载到容器内的其他位置,并符号链接到所需的文件。或使用NFS将目录挂载到主机,然后将主机挂载(绑定挂载)到特定文件。

但是,考虑到您提供的示例,使用docker配置将是我的理想解决方案,完全删除NFS挂载,并获得文件的只读副本,该文件将自动分发到运行容器的任何节点。

有关配置的更多详细信息:https :
//docs.docker.com/engine/swarm/configs/

2020-06-17