webentwicklung-frage-antwort-db.com.de

Befehlszeilenargumente für Docker CMD

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?

21
user14717

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.

25
Adrian Mouat