gpt4 book ai didi

docker - 是否可以使用 volume/mount 和 docker-compose 从远程主机挂载目录

转载 作者:行者123 更新时间:2023-12-04 17:26:22 27 4
gpt4 key购买 nike

经过长时间的搜索,我是否可以在 docker-compose 中挂载或使用卷来绑定(bind)来自远程主机的目录,我找不到问题的答案或解决方案?

示例始终使用本地目录或卷。

澄清一下:我尝试建立一个蓝绿色部署,其中一个数据库位于不同的 VM 上,然后是 2 个应用程序服务器。该应用程序及其组件将使用 docker 进行部署,并且还需要访问保存内容的同一目录,因此蓝色和绿色都可以访问这个保存的文件。我的想法是在数据库服务器上创建这个目录,因为这将以相同的方式使用。现在我正在尝试在 docker-compose 中挂载或使用卷语法,以便后端容器可以访问数据库服务器上的目录。如果重要的话,需要访问该目录的容器基于 ubuntu 镜像。

这是正确的方法吗?然后如何在我的 docker-compose.yml 或 Dockerfile 中分配它?还是有更好的方法来实现这一目标?

提前致谢

最佳答案

Docker 允许您使用本地卷驱动程序将文件系统挂载到容器中,以挂载您可以通过挂载系统调用访问的任何内容。系统调用几乎与 Linux 中的 mount 命令相同。但是,当您执行类似 NFS 挂载的操作时,您会看到一些挂载命令如何将该命令预处理到系统调用中。

以下是在 docker 中执行 NFS 卷挂载的不同方法的几个示例:

  # create a reusable volume
$ docker volume create --driver local \
--opt type=nfs \
--opt o=nfsvers=4,addr=nfs.example.com,rw \
--opt device=:/path/to/dir \
foo

# or from the docker run command
$ docker run -it --rm \
--mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=nfs.example.com\",volume-opt=device=:/host/path \
foo

# or to create a service
$ docker service create \
--mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=nfs.example.com\",volume-opt=device=:/host/path \
foo

# inside a docker-compose file
...
volumes:
nfs-data:
driver: local
driver_opts:
type: nfs
o: nfsvers=4,addr=nfs.example.com,rw
device: ":/path/to/dir"
...

有关所有选项和潜在陷阱的更多详细信息,请参阅 this answer关于类似的问题。

关于docker - 是否可以使用 volume/mount 和 docker-compose 从远程主机挂载目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62992529/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com