web-dev-qa-db-fra.com

Arguments de ligne de commande pour Docker CMD

Je veux passer un paramètre dans un CMD docker. Par exemple, si le contenu de Dockerfile est

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

Ensuite, je veux exécuter comme suit:

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

Je souhaite que le contenu de Dockerfile soit imprimé à l'écran. Mais à la place, Docker pense que /data/Dockerfile est un script qui devrait remplacer le CMD, donnant l'erreur

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

Comment éviter cela?

21
user14717

Utilisez ENTRYPOINT pour des trucs comme ça. Tous les paramètres CMD sont ajoutés au ENTRYPOINT donné.

Donc, si vous mettez à jour le Dockerfile pour:

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

Les choses devraient fonctionner comme vous le souhaitez.

De plus, comme vous n'avez pas besoin du $1, vous devriez pouvoir le changer en:

FROM ubuntu:15.04
ENTRYPOINT ["/bin/cat"]

Je n'ai testé rien de tout cela, alors faites-moi savoir si cela ne fonctionne pas.

25
Adrian Mouat