2015-09-13 2 views
7

Desidero passare un parametro in una finestra mobile CMD. Ad esempio, se il contenuto del Dockerfile sonoArgomenti della riga di comando per Docker CMD

FROM ubuntu:15.04 
CMD ["/bin/bash", "-c", "cat", "$1"] 

Poi voglio correre come segue:

docker build -t cat_a_file . 
docker run -v `pwd`:/data cat_a_file /data/Dockerfile 

Vorrei il contenuto di Dockerfile da stampare sullo schermo. Ma invece, Portuale pensa che /data/Dockerfile è uno script che dovrebbe ignorare il CMD, dando l'errore

Error response from daemon: Cannot start container 7cfca4: 
[8] System error: exec: "/data/Dockerfile": permission denied 

Come può essere evitato?

risposta

9

Utilizzare ENTRYPOINT per cose come questa. Tutti i parametri CMD vengono aggiunti al numero ENTRYPOINT specificato.

Quindi, se si aggiorna il Dockerfile a:

FROM ubuntu:15.04 
ENTRYPOINT ["/bin/bash", "-c", "cat"] 

le cose dovrebbero funzionare come si desidera.

Inoltre, come non è necessario il $1, si dovrebbe essere in grado di cambiare a:

non ho provato nulla di tutto questo, quindi fatemi sapere se non funziona .

+0

L'ho appena testato e funziona. Grazie mille. – user14717

+0

Solo così possiamo creare script più complicati, qual è il modo corretto di usare l'argomento '$ 1'-style? – user14717

+0

Probabilmente è meglio usare le variabili d'ambiente in questi casi. Non puoi usare '$ 1' ecc. –