it-swarm.com.de

Wie starte ich den Container mit der Container-ID neu?

Ich habe mit dem Befehl einen Container erstellt 

docker run ubuntu /bin/bash -c "echo 'cool content' > /tmp/cool-file"

Jetzt sehe ich, dass der Container beendet wurde

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
9e5017aef3f9        ubuntu              "/bin/bash -c 'echo '"   38 seconds ago      Exited (0) 36 seconds ago                       elegant_euler

Frage: Wie kann ich mit seiner container-id neu starten und in den interaktiven Modus für diesen Container wechseln?
Ich kann docker run -it <image_name> nicht verwenden, da dies den Image-Namen und keine Container-ID erwartet Ich habe versucht, Docker-Attach zu verwenden, aber ich denke, das funktioniert nur für das Ausführen von Containern . Ich möchte diesen Container noch nicht festschreiben Wie kann ich also neu starten und mit dieser Container-ID in den interaktiven Modus für diesen Container wechseln?
BEARBEITEN: Ich bin in der Lage, mit docker start {container-id} in andere Container zu gelangen und dann docker attach {container-id} auszuführen. Ich frage mich, ob es etwas Besonderes an der Art und Weise gibt, wie ich den Container erstellt habe, der zu diesem Verhalten führen würde. Ich fange gerade mit dem Docker an, also lenke mich in die richtige Richtung, wenn mir etwas Grundsätzliches fehlt.

7
AnukuL

Ein Container wird beendet, wenn er seinen Befehl ausgeführt hat. So begann der Container mit

docker run ubuntu /bin/bash -c "echo 'cool content' > /tmp/cool-file"

wird beendet, sobald der Befehl echo abgeschlossen ist. In diesem Fall ist ein Neustart des Containers nicht sinnvoll.

Wenn Sie einen neuen Container im getrennten Modus ausführen, können Sie ihn weiter betreiben und ein zweites Mal anhängen.

In Ihrem Fall sollten Sie also einen neuen Container aus dem Bild im getrennten Modus ausführen und einen Befehl wie /bin/bash ausführen. Dann können Sie das Echo ausführen und es anhängen

docker run -d -ti ubuntu /bin/bash
docker exec -ti <containerId> /bin/bash -c "echo 'cool content' > /tmp/cool-file"

Der Container bleibt am Leben, so dass Sie weitere Befehle ausführen können, z. B. . Docker exec -ti/bin/bash -c "cat/tmp/cool-file"

oder führen Sie ein neues/bin/bash aus, um Ihren Container "anzuhängen" und als Eingabeaufforderung darin zu arbeiten

docker exec -ti <containerId> /bin/bash
[email protected]<containerId>:/# cat /tmp/cool-file 
cool content

Sie können diesen Container erfolgreich stoppen/starten/neu starten

docker stop <containerId> && docker start <containerId>

oder

docker restart <containerId>

Erinnern Sie sich daran, dass beim Neustarten eines Containers der ursprüngliche Befehl erneut ausgeführt wird. Wenn Sie also den Container Ihres Anwendungsfalls neu starten könnten (was Sie jedoch nicht tun), wird er erneut ausgeführt. /bin/bash -c "cat /tmp/cool-file"

Beim Neustart eines Containers, der mit dem Befehl/bin/bash ausgeführt wird, wird beim Neustart derselbe Befehl erneut ausgeführt.

Normalerweise können Sie den Befehl nicht in RUN ändern, wenn Sie einen vorhandenen Container neu starten. Um dies zu tun, können Sie einige Tricks ausprobieren, wie unter vorgeschlagen, um einen gestoppten Docker-Container mit einem anderen Befehl zu starten

9
gile

ich habe es selbst versucht:

docker restart <container_id>

docker exec -it <container_id> bash

funktioniert perfekt, um neu zu starten und in ein interaktives Terminal zu gelangen. 

2
Gabbax0r

Überprüfen Sie Docker start Befehl

docker stop {containerId} && docker start -i {containerId}
0