示例(为简便起见,省略了许多选项):
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意味着该卷名称必须是文件的完整路径(即,您不能在该卷名称后附加路径)?
traefik/traefik.toml
尝试设置device: ":/volume/docker/traefik/traefik.toml"只会返回not a directory错误。
device: ":/volume/docker/traefik/traefik.toml"
not a directory
有没有办法将单个文件安装到容器中?
您不能在命名卷中装入文件或子目录,源是命名卷或主机路径。NFS本身,以及您将在Linux中挂载的大多数文件系统,都要求您挂载整个文件系统,而不是单个文件,当下降到inode级别时,这通常是一件好事。
我能想到的剩下的选项是将整个目录挂载到容器内的其他位置,并符号链接到所需的文件。或使用NFS将目录挂载到主机,然后将主机挂载(绑定挂载)到特定文件。
但是,考虑到您提供的示例,使用docker配置将是我的理想解决方案,完全删除NFS挂载,并获得文件的只读副本,该文件将自动分发到运行容器的任何节点。
有关配置的更多详细信息:https : //docs.docker.com/engine/swarm/configs/