In den vergangenen Artikel haben wir uns nun bereits einige Docker Themen angeschaut. Das ging über die Installation von Docker über Python Apps deployen bis zum Aufbau kleiner Microservices. Heute schauen wir uns mal alles rund um das Thema Docker Container an. Wie kann ich sie anzeigen, starten, stoppen oder auch von meine Host entfernen.
Inhaltsverzeichnis
Docker Container anzeigen mit docker ps
Wir beginnen damit, die bereits vorhandenen Docker Container auf unserem Host zu identifizieren. Dies kann man dem Befehl docker ps erledigt werden. Geben wir diesen jetzt einfach auf dem Host ein, kann es sein, dass wir keine Container angezeigt bekommen. Das liegt daran, dass docker ps nur die Container aufgelistet, die im Moment den Status running haben.
1 2 3 | docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 54fad25b3266 redis:3.2.0 "docker-entrypoint.s…" 4 weeks ago Up 13 seconds 6379/tcp redis |
Wenn alle vorhandenen Container angezeigt werden soll, muss der Befehl mit dem Parameter -a für all erweitert werden. Das ganze sieht bei mir auf dem System dann wie folgt aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES eba5473e635a redis:3.2.0 "docker-entrypoint.s…" 12 days ago Exited (0) 19 hours ago RedisConduler b044aba9de41 microservices_dockerapp "python -u app.py" 2 weeks ago Exited (1) 6 days ago microservices_dockerapp_1 a418e9e935f1 redis:3.2.0 "docker-entrypoint.s…" 2 weeks ago Exited (255) 2 weeks ago 6379/tcp microservices_redis_1 5bd8972cc206 pyredis:v0.1 "python -u app.py" 4 weeks ago Exited (0) 2 weeks ago pyredis 54fad25b3266 redis:3.2.0 "docker-entrypoint.s…" 4 weeks ago Up 2 minutes 6379/tcp redis b9a0bd8a0157 pyignite:v0.1 "sleep 1000" 4 weeks ago Exited (128) 4 weeks ago pyignite b56456cb3d30 c2a6ac081636 "sleep 1000" 4 weeks ago Exited (137) 4 weeks ago awesome_darwin 856174167c1f 1698c51883cd "/bin/sh -c 'pip ins…" 4 weeks ago Exited (127) 4 weeks ago wizardly_meninsky 418bf430f002 45f4f2192701 "sleep 1000" 4 weeks ago Exited (137) 4 weeks ago infallible_wilson f1961c81b5a4 a7be2323134f "sleep 1000" 4 weeks ago Exited (137) 4 weeks ago frosty_goodall 1bc888e850f3 a7be2323134f "sleep 1000" 4 weeks ago Exited (137) 4 weeks ago sad_jepsen ec6a231f285c a7be2323134f "sleep 1000" 4 weeks ago Exited (137) 4 weeks ago modest_mirzakhani 9cfab4bda3ef a7be2323134f "python app.py" 4 weeks ago Exited (1) 4 weeks ago quirky_williams c12dc4120d6c a7be2323134f "python app.py" 5 weeks ago Exited (1) 5 weeks ago serene_swartz 87af643f219f a7be2323134f "python app.py" 5 weeks ago Exited (1) 5 weeks ago awesome_curie 14a0687cbc61 596a251b7aba "python app.py" 5 weeks ago Exited (1) 5 weeks ago sad_shannon c06a91db03bf 596a251b7aba "python app.py" 5 weeks ago Exited (1) 5 weeks ago vigilant_noether 4dd202b86db8 ca141fd57db1 "python app.py" 5 weeks ago Exited (1) 5 weeks ago determined_proskuriakova 1c5cc00bddf5 ad88f8895bcd "python app.py" 5 weeks ago Exited (1) 5 weeks ago inspiring_proskuriakova 4626d45ca100 2ab5bc953c4f "/bin/sh -c 'pip ins…" 5 weeks ago Exited (1) 5 weeks ago happy_chatterjee ad9f3e902067 690ff5f1cbf3 "python app.py" 5 weeks ago Exited (1) 5 weeks ago sad_lovelace 7b32b41caee7 690ff5f1cbf3 "python app.py" 5 weeks ago Exited (1) 5 weeks ago upbeat_sammet 4ce4933ed038 0a18040447d5 "python app.py" 5 weeks ago Exited (1) 5 weeks ago festive_wright c91a89fee08c 0a18040447d5 "/bin/bash" 5 weeks ago Exited (0) 5 weeks ago happy_vaughan 04e9450ac6f8 0a18040447d5 "python app.py" 5 weeks ago Exited (1) 5 weeks ago frosty_saha 89347d59ee14 8ded2bc03565 "/bin/sh -c 'pip ins…" 5 weeks ago Exited (1) 5 weeks ago compassionate_heyrovsky e1a555ca50b4 a278a3f8fa02 "/bin/sh -c 'pip ins…" 5 weeks ago Exited (1) 5 weeks ago focused_curie d98b5a3d6150 e649f67bb435 "/bin/sh -c 'apt-get…" 5 weeks ago Exited (1) 2 weeks ago epic_pare 6578d9e2db28 e649f67bb435 "/bin/sh -c 'apt-get…" 5 weeks ago Exited (100) 5 weeks ago quizzical_mclean acb64336c66d e649f67bb435 "/bin/sh -c 'pip ins…" 5 weeks ago Exited (1) 5 weeks ago gracious_carson 540c09b94fd8 9eae4a8d53fa "python app.py" 5 weeks ago Exited (1) 5 weeks ago objective_tereshkova 233015b4211c 9eae4a8d53fa "python app.py" 5 weeks ago Exited (1) 5 weeks ago nostalgic_keldysh 5c37c0916868 2b12c193acc8 "python app.py" 5 weeks ago Exited (1) 5 weeks ago stoic_mayer 2a245c0b2bee 2b12c193acc8 "python app.py" 5 weeks ago Exited (1) 5 weeks ago dreamy_euler 642e35c6d6f1 58355da0c7d0 "python app.py" 5 weeks ago Exited (1) 5 weeks ago blissful_davinci 33bd61f98a2d dca4cef41c83 "python app.py" 5 weeks ago Exited (1) 5 weeks ago competent_clarke 344af624f217 ba8e426a9780 "python app.py" 5 weeks ago Exited (1) 5 weeks ago modest_ardinghelli ec7313f6399e apacheignite/ignite "/bin/sh -c $IGNITE_…" 5 weeks ago Exited (255) 12 days ago 11211/tcp, 47100/tcp, 47500/tcp, 49112/tcp ignite |
Hier sehen wir nun, dass zb. mehrere Container das selbe Image verwenden. Das kann gewollt sein, aber meistens passiert das wenn man den Containern keinen expliziten Namen gibt.
Starten von vorhandenen Docker Containern
Die bereits vorhandenen Docker Container können von uns wieder gestartet werden. Das macht ja auch Sinn, falls man eine Applikation hat die Daten im Container speichern soll. Würde man immer wieder einen neuen Container benötigen würde das keinen Sinn machen.
Um einen Docker Container zu starten benötigt man entweder die Container ID oder den Container Name. Beides lässt sich mit docker ps -a anzeigen.
Haben wir diese Informationen, lässt sich der Container ganz einfach mit docker start <container_name> oder docker start <container_id> starten.
1 | docker start ec7313f6399e |
Ob der Container gestartet ist, kann anschließend wieder mit docker ps geprüft werden.
1 2 3 4 | docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 54fad25b3266 redis:3.2.0 "docker-entrypoint.s…" 4 weeks ago Up 9 minutes 6379/tcp redis ec7313f6399e apacheignite/ignite "/bin/sh -c $IGNITE_…" 5 weeks ago Up 2 minutes 11211/tcp, 47100/tcp, 47500/tcp, 49112/tcp ignite |
Wie stoppe ich einen Docker Container?
Das stoppen eines Docker Containers funktioniert fast genau so wie das starten eines Containers. Man muss lediglich start durch stop im Befehl tauschen. Auch das stoppen kann über die Container ID oder den Container Namen erfolgen. Die Befehle wären dann docker stop <container_name> oder docker stop <container_id>.
Das ganze sieht dann wie folgt aus im Terminal:
1 2 | docker stop ec7313f6399e ec7313f6399e |
Nach dem stoppen prüfen wir das ganze wieder mit dem docker ps Befehl.
1 2 3 | docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 54fad25b3266 redis:3.2.0 "docker-entrypoint.s…" 4 weeks ago Up 15 minutes 6379/tcp redis |
Docker Container löschen – Weg mit dem Ballast
Zu guter Letzt schauen wir uns noch an, wie man Docker Container die nicht mehr benötigt werden. Um Container zu löschen verwendet man den Befehl docker rm. Dieser kann wie auch die Befehle zuvor entweder mit der Container ID oder dem Container Namen ausgeführt werden. Die beiden Befehl würde dann so aussehen: docker rm <container_name> oder docker rm <container_id>.
Achtung: Ich sehe ganz oft Personen die direkt den Parameter -f beim Löschen angeben. Damit erzwingt man das löschen des Containers. Ich rate davon ab. Das löschen von Container macht nur dann Probleme, wenn es Abhängigkeiten gibt. Wenn das der Fall ist, sollte man diese Abhängigkeiten lieber sauber auflösen anstelle den Parameter -f zu verwenden.
Wenn wir einen Container löschen, sieht das ganze dann auf dem Terminal wie folgt aus;
1 2 | docker rm ec7313f6399e ec7313f6399e |
Soweit erstmal zum Umgang mit Docker Container. Habt ihr noch Fragen oder Feedback? Dann könnt ihr mir gerne ein Kommentar hinterlassen.
Jan meint
Muss man jedes mal die recht lange Container Id eingeben?
Zumindest unter Windows bringt die TAB-Taste keine Erleichterung per Autovervollständigung.
Danke
Jan
Christian Piazzi meint
Hallo Jan,
Nein muss man nicht. Man kann dem Container auch einen Namen geben indem man beim Starten
–name MeinContainer eingibt.
Dann kann man für das Starten/Stoppen zukünftig diesen Containernamen verwenden.
Solltest du noch weitere Fragen haben, meld dich einfach wieder =)
Gruß
Christian
Rufin meint
Hallo
Wie kann ich Docker beim start von Raspberry verzögert starten Lasen
LG.Rufin
humph meint
Es reicht auch wenn man die ersten paar Zeichen der container id eingibt. Sobald es eindeutig ist funktioniert es.
LG
Rainer meint
Hallo, ich hab ein Problem, möchte gern einen Game Server Installieren, nur komme ich damit wieder einmal nicht klar.
Ich bin zuerst auf diese Seite :https://github.com/Mephi00/v-rising-wine-docker-image und dann auf diese: https://hub.docker.com/r/mephi00/v-rising-wine
Problem an der Sache, zwar weis ich das das Image nach „/var/lib/docker“ kopiert/geladen wurde, es ist auch drinnen:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mephi00/v-rising-wine latest eb48c7463f1b 9 months ago 3.81GB
aber dann kapier ich alles andere nicht mehr. /Werde doch langsam alt dafür.
Mein Game Ordner ist -opt/steam, da sind alle Spiele drinnen die auf dem Server laufen, oder laufen sollten.
Ein Ordner ist dabei der „gamedir“ heißt, hier hatte ich auch schon ein Docker-Spiel drinnen, das auch läuft, dafür war die Erklärung auch Perfekt , nun dachte ich mir, ich könnte diese : https://steamcommunity.com/app/383120/discussions/0/2572068292093565441/
Diese Beschreibung auf das VRising image anwenden, was aber nicht geht, da es ja auch das andere Image zugeschnitten ist.
Bitte können Sie mir helfen, damit ich das Raffe, wie ich das Vrising Image zum Starten bekomme?
Docker läuft auf dem Root System und ist Aktuell .
Christian meint
Hi,
also ich vermute das es mit
docker run -it -p 30000-30003:30000-30003/udp -v $PWD/gamedir:/opt/Steam mephi00/v-rising-wine
richtig? Kannst du mal deinen aktuellen docker run Befehl schicken. Dann ist es etwas einfacher =)
Rainer Wohlfarth meint
Danke @Christian für deine Antwort, mir geht es Eigentlich darum wie ich das Docker Image Installieren.
Ich hab es ja auch schon Umgeschrieben nach:
docker run -it -p 9876-9876:9877-9877/udp -v $PWD/gamedir:/opt/steam bitr/mephi00/v-rising-wine [latest]
Das nimmt er aber nicht, da kommt dann immer die Fehlermeldung, das er das Image nicht findet, und wie oben hab ich eingepostet, das dass Image ja vorhanden ist, oder fehlt mir da das „latest dahinter.
„Aktueller Docker Befehl? Hä, das ist doch ein Docker Befehl „Docker run“
Rainer Wohlfarth meint
ahhhhhh, das wars: docker run -it -p 9876-9876:9877-9877/udp -v $PWD/gamedir:/opt/steam mephi00/v-rising-wine
musste das richtige Image einrichten lol, und ich hatte das bitr noch davor, etz hat ers Installiert, ma kucken ob ich es nun schaffe
Rainer Wohlfarth meint
Lol, jetzt läuft er auch, aber nun hab ich das Problem, das er nicht in dem Verzeichnis ist wo er hin soll, man das ist doch zum kot….. , ich hab ein Verzeichnis wo all die Spiele hin sollen, nach opt/steam, nicht nach Home, nicht nach var oder oder oder , und nun isses unter; /var/lib/docker/overlay2/0e1d161169a357128777a4fb083ae7a295c3d17b1221df05b160e54537addf97/diff/home/steam/Steam/steamapps/common/VRisingDedicatedServer
Und da soll nur das Image rein, und nicht das Spiel, was mach ich den Verkehrt hier, ich hab im doch gesagt das er , oder muss ich die Compose umschreiben, was immer das auch ist?
Rainer meint
Mh, und jetzt wieder nicht, also von Vorn nochmal, ich habe nun alle Installierten Container mit docker rm [ID] gelöscht.
Dann hab ich dieses Image gefunden: https://hub.docker.com/r/trueosiris/vrising
Also ich wieder in meinen user namen rein.
dann : docker pull [und das Image]
hat er gemacht.
Dann : docker run -it -p 27015-27015:27016-27016/udp -v $PWD/gamedir:/opt/steam trueosiris/vrising
hat er auch gemacht & installiert.
Auf der Seite steht unter Volumes:
steam install path /mnt/vrising/server
den finde ich aber nicht? Kann mir jemand auf die Sprünge helfen, denn ich muss ja die Serversettings und Hostingsettings ändern.
Dann die beiden unten, ich hab schon soviel von den beiden gehört, aber nie gefunden, kann mir auch da jemand sagen wo ich denn die Beiden finde?
Bitte Bitte