Ich möchte einen Parameter an eine Docker-CMD übergeben. Zum Beispiel, wenn der Inhalt von Dockerfile
ist
FROM ubuntu:15.04
CMD ["/bin/bash", "-c", "cat", "$1"]
Dann möchte ich wie folgt laufen:
docker build -t cat_a_file .
docker run -v `pwd`:/data cat_a_file /data/Dockerfile
Ich möchte, dass der Inhalt von Dockerfile
auf dem Bildschirm gedruckt wird. Stattdessen denkt Docker, dass /data/Dockerfile
ist ein Skript, das das CMD
überschreiben soll und den Fehler ausgibt
Error response from daemon: Cannot start container 7cfca4:
[8] System error: exec: "/data/Dockerfile": permission denied
Wie kann dies vermieden werden?
Verwenden Sie ENTRYPOINT
für solche Dinge. Alle CMD
-Parameter werden an das angegebene ENTRYPOINT
angehängt.
Wenn Sie also das Dockerfile aktualisieren, um:
FROM ubuntu:15.04
ENTRYPOINT ["/bin/bash", "-c", "cat"]
Die Dinge sollten so funktionieren, wie Sie es wünschen.
Da Sie den $1
Nicht benötigen, sollten Sie ihn folgendermaßen ändern können:
FROM ubuntu:15.04
ENTRYPOINT ["/bin/cat"]
Ich habe nichts davon getestet, also lass es mich wissen, wenn es nicht funktioniert.