Docker NFS 卷“没有到主机的路由”

Docker NFS 卷“没有到主机的路由”

我在 nas.vm.lan == 192.168.122.30 有一个 NFS 服务器。它导出 /srv。

我有三台 Docker 主机设置为 docker-gitlab-swarm1/2/3 == 192.168.122.27/28/29 的集群。

我在 docker-compose 文件中定义了四个卷。这是其中之一;它们都看起来像这样,只是一些名称和路径发生了变化:

Volumes:
    gitlab-config:
        driver_opts:
            type:   "nfs"
            o:      "addr=192.168.122.30,nolock,soft,rw"
            device: ":/srv/gitlab/config"

组成 Gitlab 的三个服务(PostgreSQL、Redis、Gitlab 本身)设置为以堆栈形式部署。Redis 预计不会持久保存任何数据,但 PostgreSQL 和 Gitlab 会,并且这些服务会对四个命名卷进行适当的引用。

Redis 容器顺利启动。

由于 Gitlab 容器依赖于 PostgreSQL,因此 PostgreSQL 会尝试在它之前启动。这是 docker stack ps gitlab --no-trunc 的输出:

ID                          NAME                  IMAGE                                                                                                 NODE                          DESIRED STATE       CURRENT STATE                     ERROR                                                                                                                                              PORTS
vnbbmybelrsh623nkl1mc9z18   gitlab_postgresql.1   postgres:9.6.2-alpine@sha256:f88000211e3c682e7419ac6e6cbd3a7a4980b483ac416a3b5d5ee81d4f831cc9         docker-gitlab-swarm1.lan      Ready               Rejected less than a second ago   "error while mounting volume with options: type='nfs' device=':/srv/postgresql/gitlab' o='addr=192.168.122.30,nolock,soft,rw': no route to host"   

(还有更多类似的东西)

将文件系统从 NFS 服务器挂载到任何 Docker 主机。

我如何使它成为到 NFS 服务器的路由,以使卷声明能够正常工作?

答案1

我认为当将类型设置为 nfs4 时这将起作用。

Volumes:
    gitlab-config:
        driver_opts:
            type:   "nfs4"
            o:      "addr=192.168.122.30,nolock,soft,rw"
            device: ":/srv/gitlab/config"

相关内容