【问题标题】:How to mount multiple NFS mounts that point to the same place in a Docker image using docker-compose如何使用 docker-compose 挂载指向 Docker 映像中同一位置的多个 NFS 挂载
【发布时间】:2020-11-08 03:06:34
【问题描述】:

不同于this one here

我想链接多个指向 docker-compose 映像中相同本地位置的 NFS 挂载。我将以下几行放入 docker-compose 文件中:

volumes:
  nfs3:
    driver: local
    driver_opts:
      type: nfs
      o: addr=172.16.20.5,rw
      device: ":/tmp/mount1"
  nfs4:
    driver: local
    driver_opts:
      type: nfs
      o: addr=172.16.20.6,rw
      device: ":/tmp/mount2"

然后在服务部分,我有一个具有以下卷配置的 postgres 实例:

volumes:
  - nfs3:/bitnami
  - nfs4:/bitnami

不幸的是,当我写入 /bitnami 时,它只写入 /tmp/mount2 而不是 /tmp/mount1。有没有一种可以同时写入两个 NFS 挂载的好方法?

【问题讨论】:

    标签: docker docker-compose nfs


    【解决方案1】:

    docker 卷系统使用 linux 挂载接口。对于特定位置,一次只能安装一件东西。最近的挂载是可访问的挂载。

    This question 讨论了挂载发生时位于特定位置的文件会发生什么。

    在您的示例中,如果文件仅显示在您的 /tmp/mount2 nfs 共享上,那么这是要安装在 /bitnami 的最新文件系统。

    同样,如果我尝试在 linux 主机上的同一位置安装两个 USB 驱动器,则只有最近安装的一个才是该位置可用的。

    【讨论】:

    • 明白了,感谢您的回答!您是否推荐一种将数据从一个 Docker 容器同时存储到多个设备的替代方法?
    • 我不认为这是一个特定于 docker 的问题。 Docker 只是一个为您启动进程并设置挂载的东西,因此您可以将您的问题重申如下:如何将我的进程/应用程序写入的数据存储在多个位置?” 有很多答案 - 一致, rsync, 改变你的应用写在两个地方,等等...
    • 谢谢。我会调查那些。我正在使用的特定应用程序是 postgresql,所以我会尝试找到一种使用 postgresql 的方法。
    • Postgres 确实具有内置的复制功能,但这通常意味着您将运行不同的 postgres 实例。你让一个 postgres 在多个地方拥有数据的动机是什么?这不是一个常见的 postgres 问题。
    • 主要动机是,如果一个 NFS 服务器出现故障,我们有另一个,postgresql 容器将作为永久存储写入。在 NFS 服务器上拥有外部存储的原因是,如果托管 Docker 容器的服务器出现故障,我们仍将拥有 posgresql 数据。如果有更好的方法,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    相关资源
    最近更新 更多