Perché non riesco a eseguire il cd in una directory con la finestra mobile in esecuzione?


39

Devo eseguire un'applicazione da una directory specifica.

$ 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

Quella directory esiste sicuramente, e se mi connetto alla finestra mobile eseguendo bash in modo interattivo posso eseguire il comando sopra.

$ sudo docker run -i -t ubuntu/decomposer /bin/bash
# cd /local/deploy/decomposer; ./decomposer-4-15-2014

Posso eseguire il mio programma specificando il percorso completo, ma poi si arresta in modo anomalo poiché prevede di essere avviato dalla directory corrente. Cosa posso fare?

Risposte:


34

Passa il tuo comando come argomento a / bin / sh in questo modo:

sudo docker run -P ubuntu/decomposer /bin/sh -c 'cd /local/deploy/decomposer; ./decomposer-4-15-2014'

docker run centos / bin / sh -c 'cd / bin; / bin / ls 'non stampa nulla, mentre la finestra mobile esegue centos / bin / sh -c' / bin / ls / bin 'funziona.
seanmcl

In realtà entrambi i comandi generano l'elenco dei file nella directory / bin. Ho provato entrambi.
Glueon,

Non sulla mia scatola, centos7.
seanmcl

1
In realtà, anche solo rimuovere le virgolette attorno al mio comando per funzionare ha funzionato bene. Penso che la finestra mobile lo avvolga /bin/sh -ccomunque.
schmmd,

85

È possibile utilizzare l' -wopzione per modificare la directory di lavoro.

docker run

  -w, --workdir=""           Working directory inside the container

Quindi, nel tuo caso, avresti eseguito:

sudo docker run -w /local/deploy/decomposer -P ubuntu/decomposer ./decomposer-4-15-2014

Potrei usare -wcon docker exec? Sto cercando un modo per eseguire script Python nel mio contenitore, ma non riesco a fermarlo al di fuori del contenitore.
zx1986,

oh, ho ricevuto la risposta ....flag provided but not defined: -w
zx1986,

1
Accidenti perché questo si è nascosto fino in fondo alla pagina di riferimento della corsa docker ! :-)
Amir Abiri

5
Questa dovrebbe essere la risposta accettata
fferri,

4

Utilizzare WORKDIR nel file Docker per impostare la directory di lavoro. Quindi è possibile eseguire il comando con EXEC.


0

Ciò potrebbe essere dovuto al problema dell'autorizzazione o l'istanza non è in grado di trovare il percorso disponibile eseguibile. Per verificare ciò, prova ad aggiungere il percorso eseguibile disponibile nel percorso e prova a eseguire lo script

per aggiungere la directory corrente nel percorso utilizzare gentilmente il comando seguente

$ export PATH=$PATH:
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.