【问题标题】:Is it possible to use volume/mount with docker-compose to mount a directory from remote host是否可以使用卷/挂载和 docker-compose 从远程主机挂载目录
【发布时间】:2020-07-20 09:33:01
【问题描述】:

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

示例总是使用本地目录或卷。

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

这是正确的方法吗?然后如何在我的 docker-compose.yml 或 Dockerfile 中分配它?或者有没有更好的方法来做到这一点?

提前致谢

【问题讨论】:

    标签: docker ubuntu docker-compose


    【解决方案1】:

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

    以下是一些在 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 的类似问题。

    【讨论】:

      猜你喜欢
      • 2019-04-10
      • 2021-07-04
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 2019-01-03
      • 2019-02-08
      相关资源
      最近更新 更多