Docker Commit Erstellt Bilder und ENTRYPOINT
Wie stellen Sie sicher, dass die original-CMD angegebene Dockerfile noch laufen docker run
, wenn Sie änderungen über docker commit
?
Hier ist die Abfolge der Ereignisse, um es ein wenig klarer:
- Image erstellen mit Dockerfile
- Laufen die Behälter von der Bild mit
-ti --entrypoint /bin/bash
irgendwann danach einige änderungen, die - Änderungen in container und führen
docker commit
zu erstellen, neues Bild, mit neuen Tags - Wenn das neue Bild ausgeführt wird, die ursprüngliche CMD-Eintrag aus der ursprünglichen Dockerfile nicht mehr laufen
So, ich bin Fragen, wie setzen Sie die CMD aus dem Dockerfile wieder auf engagierte Bild?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie ein Dockerfile um die
CMD
oderENTRYPOINT
. Einfach Basis die Dockerfile auf die Bild-id zurückgegebendocker commit
. Zum Beispiel diese:Konnte ich erstellen ein Dockerfile, das sah so aus:
Und dann verwenden, um erstellen ein neues Bild:
Sagte, Ihre beste Vorgehensweise ist wohl nicht änderungen in den Behälter und verwenden Sie dann Docker commit; Sie am Ende mit einem viel mehr überwachbare Reihe von änderungen vor, wenn Sie gerade verlassen sich auf das Dockerfile Umsetzung der notwendigen änderungen in den ersten Platz.
FROM
das neue Bild. Ich bin nicht sehr glücklich mit dieser obwohl. Wie für alles im Dockerfile; manchmal ist das nicht möglich. In diesem Fall zum Beispiel, die änderungen, die ich über ein commit stützte sich auf Dateien, die ich nicht auch im Dockerfile aufgrund der Portabilität (andere Leute würden Sie nicht haben).Aktuelle Docker-Versionen (ich bin auf 1.11.1) bieten eine
--change
option, die es ermöglichen, in-line-manipulation des Bildes zur commit-Zeit, in:CMD
wird ebenfalls unterstützt, ebenso wie ein paar andere. Sehen manpage für mehr details und Beispiele.