Hier ist eine Lösung, wenn der Docker-Container normal beendet wird und Sie die Docker-Datei bearbeiten können.
Wenn ein Docker-Container ausgeführt wird, wird eine Anwendung im Allgemeinen durch Ausführen eines Befehls bereitgestellt. Von Dockerfile Referenz ,
Sowohl CMD- als auch ENTRYPOINT-Anweisungen definieren, welcher Befehl beim Ausführen eines Containers ausgeführt wird. ... Dockerfile sollte mindestens einen der Befehle CMD oder ENTRYPOINT angeben.
Wenn Sie ein Image erstellen und keinen Befehl mit CMD oder ENTRYPOINT angeben, wird der CMD- oder ENTRYPOINT-Befehl des Basisimages ausgeführt.
Zum Beispiel hat die offizielle Ubuntu Docker-Datei CMD ["/bin/bash"]
( https://hub.docker.com/_/ubuntu ). Jetzt kann der bin/bash/
Befehl Eingaben akzeptieren und docker run -it IMAGE_ID
STDIN an den Container anhängen. Das Ergebnis ist, dass Sie ein interaktives Terminal erhalten und der Container weiterläuft.
Wenn in der Docker-Datei ein Befehl mit CMD oder ENTRYPOINT angegeben ist, wird dieser Befehl beim Ausführen des Containers ausgeführt. Wenn dieser Befehl nun ohne Eingabe beendet werden kann, wird er beendet und der Container wird beendet. docker run -it IMAGE_ID
wird NICHTIn diesem Fall das interaktive Terminal bereitgestellt. Ein Beispiel wäre das Docker-Image, das aus der Docker-Datei unten erstellt wurde.
FROM ubuntu
ENTRYPOINT echo hello
Wenn Sie zum Terminal dieses Bildes gehen müssen, müssen Sie den Container durch Ändern des Befehls entrypoint am Laufen halten.
FROM ubuntu
ENTRYPOINT echo hello && sleep infinity
Nachdem Sie den Container normal mit ausgeführt haben docker run IMAGE_ID
, können Sie einfach zu einem anderen Terminal gehen und docker exec -it CONTAINER_ID bash
das Terminal des Containers abrufen.