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?
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.