cAdvisor auf Synology
Die Ausführung von cAdvisor in Docker auf Synology war eine Herausforderung, da es oft nicht startete, obwohl keine Änderungen an den Startoptionen vorgenommen wurden. Das Problem stellte sich als ein Zusammenhang mit den inotify-Einstellungen heraus.
Das Problem
Beim Ausführen des folgenden Befehls zum Starten von cAdvisor:
docker run --name=cadvisor \
--volume="/:/rootfs:ro" \
--volume="/var/run:/var/run:ro" \
--volume="/sys:/sys:ro" \
--volume="/var/packages/ContainerManager/var/docker/:/var/lib/docker:ro" \
--security-opt no-new-privileges=true \
--restart=on-failure:5 \
google/cadvisor:latest --docker_only=true
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
container_name: cadvisor
read_only: true
security_opt:
- no-new-privileges=true
command:
- "--docker_only=true"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/packages/ContainerManager/var/docker/:/var/lib/docker:ro
restart: on-failure:5
trat der folgende Fehler auf:
F0701 00:00:00.000000 1 cadvisor.go:156] Failed to start container manager: inotify_add_watch /sys/fs/cgroup/cpu: no space left on device
Dieser Fehler wurde durch eine unzureichende Anzahl an inotify-Überwachungen verursacht.
Die Lösung
Um dieses Problem zu beheben, habe ich den Synology Task Scheduler verwendet, um den Wert von max_user_watches beim Start festzulegen:
Öffnen Sie den Task Scheduler in Synology DSM.
Erstellen Sie ein neues Benutzerdefiniertes Skript.
Setzen Sie die Aufgabe auf Startup.
Fügen Sie im Skriptfeld den folgenden Befehl ein:
sysctl fs.inotify.max_user_watches=104857Speichern Sie die Aufgabe.
Dadurch wird sichergestellt, dass das inotify-Watch-Limit bei jedem Start der Synology NAS erhöht wird, wodurch das Problem mit cAdvisor verhindert wird. Diese einfache Lösung behob das Problem und ermöglichte es, dass cAdvisor problemlos auf meiner Synology NAS läuft.