Ich starte einen Docker-Container aus einem Image mit dem folgenden Befehl:
$ docker run -d myimage /bin/bash -c "mycommand"
Wenn "mycommand"
der Vorgang abgeschlossen ist, wird der Container gestoppt (ich nehme an, er wird gestoppt), aber er wird nicht gelöscht, da ich ihn mit diesem Befehl sehen kann:
$ docker ps -a
Gibt es eine Möglichkeit, restart
diesen Container mit denselben Parametern zu verwenden und die von generierten Daten beizubehalten mycommand
?
Antworten:
Ja, wenn der erste Befehl seine Ausführung beendet hat, stoppt der Container.
Sie können einen gestoppten Container starten mit:
docker start container_name
Wenn Sie die Ausgabe Ihres Befehls sehen möchten, sollten Sie folgende
-ai
Optionen hinzufügen :docker start -ai container_name
PS. Es gibt ein,
docker restart container_name
aber das wird verwendet, um einen laufenden Container neu zu starten - ich glaube, das ist nicht Ihr Fall.quelle
docker exec -it container_name bash
. Als ich den Befehl aus dem Container heraus ausführte, konnte ich sehen, warum die anfängliche Implementierung meines Skripts fehlschlug, und ich habe ihn behoben.start
mitsleep
? Ich komme nicht an einen Punkt, an dem ich rennen kannexec
Zuerst
$ docker ps -a
zeigt alle Container (diejenigen , die aktiv sind und die gestoppt ist), so dass der Grund ist , dass Sie nicht Ihre gestoppt Container aufgelistet sehen.Zweitens können Sie einfach einen gestoppten Container starten:
Sobald der Container gestartet wurde, können Sie Ihren Befehl ausführen, indem Sie:
Das Material, das Sie in Ihrem Container erstellen, bleibt in Ihrem Container, solange es existiert. Wenn Sie Daten behalten möchten, auch wenn Ihr Container entfernt wurde, können Sie ein Volume verwenden .
quelle
Es sollte sein
quelle
restart
einen bereits laufenden Container hin