Ich muss eine Anwendung aus einem bestimmten Verzeichnis ausführen.
$ sudo docker run -P ubuntu/decomposer 'cd /local/deploy/decomposer; ./decomposer-4-15-2014'
2014/10/09 21:30:03 exec: "cd /local/deploy/decomposer; ./decomposer-4-15-2014": stat cd /local/deploy/decomposer; ./decomposer-4-15-2014: no such file or directory
Dieses Verzeichnis existiert definitiv, und wenn ich durch interaktives Ausführen von bash eine Verbindung zu docker herstelle, kann ich den obigen Befehl ausführen.
$ sudo docker run -i -t ubuntu/decomposer /bin/bash
# cd /local/deploy/decomposer; ./decomposer-4-15-2014
Ich kann mein Programm durch Angabe des vollständigen Pfads ausführen, aber dann stürzt es ab, da es erwartet, vom aktuellen Verzeichnis aus gestartet zu werden. Was kann ich tun?
/bin/sh -c
sowieso ein.Sie können die
-w
Option verwenden, um Ihr Arbeitsverzeichnis zu ändern.In Ihrem Fall würden Sie also Folgendes ausführen:
quelle
-w
mit verwendendocker exec
? Ich suche nach einer Möglichkeit, Python-Skript in meinem Container auszuführen, kann es jedoch nicht außerhalb des Containers stoppen.flag provided but not defined: -w
Verwenden Sie WORKDIR in Ihrer Docker-Datei, um das Arbeitsverzeichnis festzulegen. Dann können Sie Ihren Befehl mit EXEC ausführen.
quelle
Dies liegt möglicherweise an dem Berechtigungsproblem, oder die Instanz kann den verfügbaren Pfad der ausführbaren Datei nicht finden. Um dies zu überprüfen, fügen Sie die ausführbare Datei im Pfad hinzu und führen Sie das Skript aus
Verwenden Sie den folgenden Befehl, um das aktuelle Verzeichnis im Pfad hinzuzufügen
quelle