У меня есть NFS сервер по адресу nas.vm.lan == 192.168.122.30. Он экспортирует /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 серверу, чтобы объявления томов работали?