Docker - Befehl per Aufgabenplaner im Container ausführen

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

synschorsch

Benutzer
Registriert
24. Aug. 2013
Beiträge
30
Reaktionspunkte
7
Punkte
8
Hallo,

ich habe ein Docker Image (Debian Linux), wo ein Skript die Daten von unserem E-Auto abholt und per mqtt ins interne Netz schickt. Das ganze funktioniert wunderbar innerhalb des Containers und auch wenn ich eine Aufgabe mit dem Aufgabenplaner erstelle und manuell auslöse, funktioniert dies problemlos.

Das benutzerdefinierte Skript ist:

Code:
docker exec -d zoe-mqtt_2 /pyze/myzoe_mqtt.sh

Leider funktioniert die automatische Ausführung nicht. Die meldet nämlich immer einen Fehler:

/bin/bash: line 1: docker: command not found

Ich hab sowohl meinen normalen User ausprobiert als auch den admin/root User, in keiner Konstellation funktioniert es.

Hab ich Tomaten auf den Augen? Ich begreife nicht, warum er in der Konstellation nicht funktioniert, manuell ausgelöst aber schon...
 
Der Aufgabenplaner hat evtl. eine andere Pfad-Einstellung (PATH) als wenn man direkt auf der Konsole arbeitet. Probier's mal mit
Code:
/usr/local/bin/docker exec -d zoe-mqtt_2 /pyze/myzoe_mqtt.sh
 
ja, das wars, ich hab vorhin tatsächlich parallel mal ein
Code:
find / -name "docker" 2>/dev/null
gestartet und mit

/volume1/@appstore/Docker/usr/bin/docker exec -d zoe-mqtt_2 /pyze/myzoe_mqtt.sh

funktioniert es. Wahrscheinlich mit /usr/local/bin/docker besser, dann ist es sogar vom volume unabhängig.

Trotzdem finde ich es seltsam, dass der Aufgabenplaner funktioniert, wenn man ihn manuell auslöst. Also ohne Konsole....

Danke :)
 
Wenn du über die Konsole arbeitest, werden beim Anmelden die Dateien /etc/profile (für alle) und ~/.profile (privat) ausgeführt wo auch die PATH-Variable (als der Suchpfad) gesetzt wird (s. "echo $PATH"), der dann bei der Eingabe eines Kurzbefehls (z.B. "docker") durchsucht wird. Bei einer Ausführung über den Aufgabenplaner ist das wahrscheinlich nicht der Fall, also sollte man sich in Scripten generell selbst darum kümmern oder halt den Pfad zum Executable mit angeben. Welchen Pfad die Konsole verwendet, verrät dir "which", also z.B.
Code:
root@DS1522:~# which docker
/usr/local/bin/docker

Übrigens ist /usr/local/bin/docker auch nichts weiter als ein Link auf /var/packages/Docker/target/usr/bin/docker, wobei /var/packages/Docker/target auch wieder ein Link auf /volume1/@appstore/Docker ist.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat