Sonntag, 20. September 2015

Docker Using Guide


Docker Using Guide  

Als nächstes habe ich mir die Anleitung "Docker Using Guide" (https://docs.docker.com/userguide/) vorgenommen. Dort habe ich als erstes die "Dockerizing applications: A Hello World" (https://docs.docker.com/userguide/dockerizing/) Guide aufgerufen.
 

Dockerizing applications: A Hello World

Und da es mir auf die Nerven ging, immer das sudo mit einzugeben, habe ich meinen User der Gruppe "docker" hinzugefügt, was die sudo Eingabe überflüssig macht. Allerdings muss ich feststellen, dass es dann immer eine Fehlermeldung bezgl. des Zugriffs auf eine Datei gibt, was der Funktionalität der Container jedoch nicht entgegen steht.
  • Aufruf eines Befehls innerhalb eines Container:Jegliche Aufrufe in Bezug zu einem Container erfolgen mit run. Ist der Container auf dem Rechner noch nicht vorhanden, wird er erst herunter geladen. Danach wird der Befehl ausfgeführt (hier: echo 'Hello World') und der Container wird beendet.
  • Nächster Aufruf war ein Terminal im Container. Nicht uninteressant, da ich hier endlich erfahren konnte, wie man einen Container beendet (hatte ja gestern einfach das Terminal beendet :-(). Container beenden mit exit. Außerdem Erläuterung der Flags -t (erzeugen eines Terminals) und -i (interactive unter Verwendung der stdin)
  • Aufruf des Containers mit Flag -d (als Daemon im Hintergrund). Die angezeigte lange Zahl stell die Unique ID des Containers dar.
  • docker ps: Statusanzeige des/ der laufenden Containers. Angezeigt werden eine gekürzte Container ID, der Image Name, mit welchem Befehl der Container ausgeführt wird, wann er erzeugt wurde, Status und ein Name der von Docker generiert wird
  • um zu sehen, was der Daemon so macht, rufen wir das Log unter zu Hilfename des Image Namens aus dem Log auf: dockers logs xyz
  • Stoppen des Daemon: docker stop xyz es dauert eine Weile, bis er beendet ist, dann wird der Name noch einmal ausgegeben

Working with Container (https://docs.docker.com/userguide/usingdocker/)

  • docker version: Anzeige der installierten Komponenten, incl. der Versionen der Programmiersprache Go
  • docker --help: Hilfe, es werden alle Befehle aufgelistet; docker [Befehl] --help Hilfe zu dem Befehl
  • docker run -d -P training/webapp python app.py: Nun wird es ernst! Laden der ersten Web-Applikation in einem Container. Flag -d ist ja schon bekannt (im Hintergrund), Flag -P sagt dem Container, dass er alle benötigten Netzwerk Ports innerhalb des Containers zum Host mappen soll. Darüber kann dann die Web Applikation angezeigt werden. Weitere Erläuterungen zu -p folgen unten.
  • docker ps -l: den letzten laufenden Container anzeigen
  • docker ps -a: ALLE Container anzeigen, inkl. der gestoppten (auch die von vor Tagen)
  • docker ps -n=x: Anzeige der letzten x Container inkl. der gestoppten
  • Flag -p: Wird das Flag mit keiner genaueren Spezifizierung verwendet, nimmt es den default Port. In unserem Testfall handelt es sich um Port 5000, da dies der default-Port von Python ist. Möchte man den Host-Port selbst bestimmen, kann man das als Option an -p anhängen, z.b. docker run -d -p 80:5000 training/... Das Portmapping ist notwändig, da dadurch mehrere Applikationen parallel laufen und getestet werden können, ohne dass sie auf den gleichen Port zu greifen. Achtung: soll der Default-Port verwendet werden wird das -P groß geschrieben. Soll der Port spezifiziert werden, wird -p klein geschrieben
  • docker port [name des Containers] [Port innerhalb des Containers]: Rückgabe des Ports auf dem Host, der dem Containerport zu gewiesen wurde. Allerdings ist mir aktuell nicht der Sinn dieses Befehls schlüssig, da ich über docker ps ja den Namen des Containers recherchieren muss. Dort kann ich dann auch den verwendeten Hostport sehen (?!)
  • docker logs -f xyz: Aufruf der Log Funktion in Liveaufzeichnung. Das heißt, bei Aktivitäten im Container wird das Log erweitert. Es wird dabei aber ebenfalls das schon vorhandene Log angezeigt. Ctrl + C zum Verlassen.
  • docker top xyz: Anzeige der PID der verwendeten Prozesse innerhalb des Containers. Funktioniert bei mir leider nicht einwandfrei. Ich bekomme zwar den Prozess "python app.py" angezeigt, aber keine PID dazu. Dort wird nur ein ? gelistet.
  • docker inspect xyz: Ausgabe eines JSON Protokoll mit allen möglichen Informationen zu dem Container. Die Informationen können auch einzeln abgerufen werden unter zu Hilfename des Flags -f: z.B. "docker inspect -f '{{ .NetworkSettings.IPAddress }}' nostalgic_morse". Aber wie man sehen kann, muss man wissen, nach was mam sucht ;-)
  • docker start xyz: Hat man einen Container beendet und möchte ihn wieder starten, kann man das über den start Befehl realisieren. Es wird dann der gleiche Container (gleicher Name) erneut gestarte, der Port wird aber um eins inkrementiert. 
  • docker restart xyz: Hier wird der Container einmal neu gestartet, wobei er ebenefalls einen neuen (inkrementierten) Port zugewiesen bekommt. 
  • docker rm xyz: Löschen eines Containers aus dem System. Dieser Vorgang ist final und kann nicht mehr rückgängig gemacht werden. Der Container muss vorher gestoppt werden.
     

Keine Kommentare:

Kommentar veröffentlichen