У меня есть сервер 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 пытается запустить его раньше. Это результат работы стека докеров 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, чтобы объявления тома работали?
Думаю, это сработает при установке типа на nfs4.
Volumes:
gitlab-config:
driver_opts:
type: "nfs4"
o: "addr=192.168.122.30,nolock,soft,rw"
device: ":/srv/gitlab/config"