Nach der Entdeckung, dass diese massiv undokumentiert ist, dann ist hier der richtige Weg, um einen NFS-Volume mit Stack und Docker compose zu montieren.
Das Wichtigste ist, dass Sie version: "3.2"
oder höher verwenden müssen. Sie werden seltsame und nicht offensichtliche Fehler haben, wenn Sie das nicht tun.
Das zweite Problem ist, dass die Volumes nicht automatisch aktualisiert werden, wenn sich ihre Definition ändert. Dies kann dazu führen, dass Sie ein Kaninchenloch davon abhalten, zu denken, dass Ihre Änderungen nicht korrekt sind, wenn sie einfach nicht angewendet wurden. Stellen Sie sicher, dass Sie docker rm VOLUMENAME
überall wo es möglich ist, als ob das Volume vorhanden ist, wird es nicht überprüft werden.
Das dritte Problem ist eher ein NFS-Problem - Der NFS-Ordner wird nicht auf dem Server erstellt, wenn es nicht existiert. So funktioniert NFS. Sie müssen sicherstellen, dass es existiert, bevor Sie etwas tun.
(nicht entfernen ‚soft‘ und ‚nolock‘, wenn Sie sicher sind, wissen Sie, was Sie tun - das hält Docker einfriert, wenn Ihr NFS-Server weggeht)
Hier ist ein komplettes Beispiel:
[[email protected] docker-mirror]# cat nfs-compose.yml
version: "3.2"
services:
rsyslog:
image: jumanjiman/rsyslog
ports:
- "514:514"
- "514:514/udp"
volumes:
- type: volume
source: example
target: /nfs
volume:
nocopy: true
volumes:
example:
driver_opts:
type: "nfs"
o: "addr=10.40.0.199,nolock,soft,rw"
device: ":/docker/example"
[[email protected] docker-mirror]# docker stack deploy --with-registry-auth -c nfs-compose.yml rsyslog
Creating network rsyslog_default
Creating service rsyslog_rsyslog
[[email protected] docker-mirror]# docker stack ps rsyslog
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
tb1dod43fe4c rsyslog_rsyslog.1 jumanjiman/rsyslog:latest swarm-4 Running Starting less than a second ago
[[email protected] docker-mirror]#
nun auf Schwarm-4:
[email protected]:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d883e0f14d3f jumanjiman/rsyslog:latest "rsyslogd -n -f /e..." 6 seconds ago Up 5 seconds 514/tcp, 514/udp rsyslog_rsyslog.1.tb1dod43fe4cy3j5vzsy7pgv5
[email protected]:~# docker exec -it d883e0f14d3f df -h /nfs
Filesystem Size Used Available Use% Mounted on
:/docker/example 7.2T 5.5T 1.7T 77% /nfs
[email protected]:~#
Dieses Volumen wird erstellt (aber nicht zerstört) auf jedem Schwarm Knoten, der die s Der Kurs läuft weiter.
[email protected]:~# docker volume inspect rsyslog_example
[
{
"CreatedAt": "2017-09-29T13:53:59+10:00",
"Driver": "local",
"Labels": {
"com.docker.stack.namespace": "rsyslog"
},
"Mountpoint": "/var/lib/docker/volumes/rsyslog_example/_data",
"Name": "rsyslog_example",
"Options": {
"device": ":/docker/example",
"o": "addr=10.40.0.199,nolock,soft,rw",
"type": "nfs"
},
"Scope": "local"
}
]
[email protected]:~#
bitte nicht vergessen ‚:‘ in ‚Gerät:‚: $ PathOnServer‘‘ – MaxiReglisse
Danke, dass für den Hinweis auf ich es in der Antwort hinzugefügt mehr klar zu sein. – herm