我在 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"