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

时间:2019-04-06 09:25:40

标签: docker docker-compose nfs

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

<mat-button-toggle-group name="fontStyle" aria-label="Font Style">
  <mat-button-toggle value="bold">Bold</mat-button-toggle>
  <mat-button-toggle value="italic">Italic</mat-button-toggle>
  <mat-button-toggle value="underline">Underline</mat-button-toggle>
</mat-button-toggle-group>

出现错误,因为没有名称为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"错误。

是否可以采用一个文件并将其安装到容器中?

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

我相信我找到了问题!

错误:

   volumes:
      - traefik/traefik.toml:/traefik.toml

正确:

   volumes:
      - /traefik/traefik.toml:/traefik.toml      

以“ /”开始音量