diff --git a/slides.md b/slides.md index 5e842aa..3e6ab31 100644 --- a/slides.md +++ b/slides.md @@ -23,7 +23,6 @@ Die Werbung verspricht: ![](images/docker-command-daemon-deck.png) -- **`~$ docker version`
** #### Bestimmung der Version @@ -49,9 +48,8 @@ Git commit (server): c78088f ![](images/docker-command-registry-deck.png) -- -**`~$ docker search`** -####
 Auf der Suche nach dem goldenen Image +**`~$ docker search`
** +#### Auf der Suche nach dem goldenen Image *** ```bash @@ -72,9 +70,8 @@ centos The official build of CentOS. 442 [OK] * Versionen (z.B. hier von CentOS) werden nicht angezeigt, nur das Repository * Besser zum Suchen: [Docker Hub](https://registry.hub.docker.com/search) -- -**`~$ docker pull`** -####
 Wir brauchen das Image lokal um es zu verwenden +**`~$ docker pull`
** +#### Wir brauchen das Image lokal um es zu verwenden * Download eines Repositories (oder Teilen davon) von der öffentlichen Docker-Registry. *** @@ -90,9 +87,8 @@ $ docker pull redis:latest *** * **Wichtig:** Tag mit angeben! Sonst wird das gesamte Repository gezogen
(z.B. Ubuntu 12.04/12.10/13.04/13.10/14.04 >> 1GB) -- -**`~$ docker images | inspect`** -####
Die lokalen Images ansehen +**`~$ docker images | inspect`
** +#### Die lokalen Images ansehen Ansehen der lokal gespeicherten Images, inkl. Details *** @@ -108,9 +104,9 @@ $ docker inspect 70214e5d0a90 "Comment": "", ... ``` -- -**`~$ docker rmi`** -####
 Ein lokales Image entfernen + +**`~$ docker rmi`
** +#### Ein lokales Image entfernen Einzelne Images aus dem lokalen Cache löschen *** @@ -126,8 +122,7 @@ $ docker rmi 70214e5d0a90 * D.h. das Image lebt erstmal weiter, auch wenn der Container schon weg ist. * --force hilft im Notfall. -- -**`~$ docker history`** +**`~$ docker history`
** #### Zeig die Befehlshistorie des Images an ```bash vagrant@serverspecbox:~$ docker history 1934124c12e6 @@ -147,9 +142,8 @@ c2a5714574ba 35 hours ago /bin/sh -c groupadd -r tomcat -g 4242 && ![](images/docker-command-images-deck.png) -- -**`~$ docker run`** -####
 Das wichtigste Kommando: Container starten! +**`~$ docker run`
** +#### Das wichtigste Kommando: Container starten! Instanziieren eines einzelnen Containers Vermutlich das Kommando mit den meisten Parametern. @@ -167,7 +161,7 @@ CTRL+P CTRL+Q zum detachen der shell * Im Image ist optional ein Kommando integriert. * Im Fall der Bash hier: Ein `exit` oder `CTRL-D` beendet die Shell, d.h. den Prozess, d.h. den Container. * So ist der Container aber noch laufigfähig vorhanden! -- + ### Was bedeutet ein `docker start`? * Müssen wir hier nicht erklären, was wirklich passiert ist? @@ -181,9 +175,9 @@ CTRL+P CTRL+Q zum detachen der shell - Volumen mounten - Ports Freigeben - Prozess starten mit einem bestimmten Nutzer -- -**`~$ docker ps`** -####
 Container anzeigen + +**`~$ docker ps`
** +#### Container anzeigen Übersicht über laufende und gelaufene Container @@ -203,12 +197,12 @@ e6aa98c81a41 * Der Status ist leider schlecht grep-bar. * Es existieren verschiedene Filtermöglichkeiten (`docker ps --help`) -- -**`~$ docker ps | attach`**
 + +**`~$ docker ps | attach`
** #### Sich mit interaktiven Containern verbinden -- -**`~$ docker rm
`** + +**`~$ docker rm`
** #### Alte Container abräumen Container, deren Prozess beendet wurde bleiben in der Containerliste stehen (`docker ps –a`). Der `rm`-Befehl löscht diese. @@ -224,9 +218,9 @@ e6aa98c81a41 * Funktioniert nur mit abgelaufenen Containern (außer dann mit --force) * Besser: Beim run direkt --rm mitgeben -- -**`~$ docker logs`** -####
 Ausgabe von Container anschauen + +**`~$ docker logs`
** +#### Ausgabe von Container anschauen *** ```bash @@ -241,9 +235,9 @@ exit * `-t == timestamps` * `-tail == nur die letzten x Zeilen anzeigen` -- -**`~$ docker events`** -
#### Ereignisse des Docker Daemons ansehen + +**`~$ docker events`
** +#### Ereignisse des Docker Daemons ansehen Der Docker Daemon zeigt Ereignisse aus der API bzw. der Kommandozeile an. *** @@ -254,8 +248,8 @@ $ docker events *** * Keine Besonderheiten. Nett zum Kennenlernen/Debuggen. * Sehr wichtig für Discovery-Mechanismen (l8r) -- -**`~$ docker diff
`** + +**`~$ docker diff`
** #### Unterschiede im Filesystem anzeigen Zeige Änderungen an, die der laufende Container im FS-Layer erzeugt @@ -276,9 +270,9 @@ D /etc/sysctl.conf ``` *** * Keine Besonderheiten. Interessantes Debugging-Werkzeug. -- -**`~$ docker top`** -####
Prozessdetails eines Containers anzeigen + +**`~$ docker top`
** +#### Prozessdetails eines Containers anzeigen STDOUT/STDERR eines Containers ansehen. *** @@ -296,10 +290,14 @@ root 4201 7159 0 ``` *** * Nur rudimentäre Informationen (s. deep dive später) + --- + ## Ausflug + Wollen wir hier einen Ausflug in die Namespaces und Cgroups wagen? -Anzeige welche Rechte wirklich vergeben sind im /proc File System +Anzeige welche Rechte wirklich vergeben sind im /proc File System. + --- ## Ziel: Apache-Container manuell bauen
 @@ -326,9 +324,9 @@ CTRL+P, CTRL+Q Wenn wir apachectl -D FOREGROUD nutzen klappt es! ``` -- -**`~$ docker commit`** -####
Den Dateisystem-Stand festhalten + +**`~$ docker commit`
** +#### Den Dateisystem-Stand festhalten Ein „Commit“ erzeugt ein neues Image auf Basis eines bestehenden Containers *** @@ -354,9 +352,9 @@ REPOSITORY TAG IMAGE ID CREATED --- ## Weiter gehts -- -**`~$ docker tag`** -####
 Namen für Images + +**`~$ docker tag`
** +#### Namen für Images * Ein „tag“ gibt einem Image (anhand seiner ID) einen Namen * docker tag [OPTIONS] IMAGE [REGISTRYHOST/][USERNAME/]NAME[:TAG] @@ -386,7 +384,8 @@ infrabricks/httpd 2.2 ffdb1d64ba4d 8 minutes ago ```bash ~$ docker run \ -tdi \ - -p 127.0.0.1:8000:80
 -e APACHE_RUN_USER=www-data \ + -p 127.0.0.1:8000:80 \ + -e APACHE_RUN_USER=www-data \ -e APACHE_RUN_GROUP=www-data \ -e APACHE_LOG_DIR=/var/log/apache2 \ -e APACHE_LOCK_DIR=/var/run/lock \ @@ -405,7 +404,8 @@ vagrant@docker-workshop:~$ curl http://127.0.0.1:8000/ `docker ps, docker top, docker inspect` --- -**`~$ docker stop | kill`**
 + +**`~$ docker stop | kill`
** #### Container stoppen Sendet SIGTERM und/oder SIGKILL an einen Container-Prozess @@ -422,10 +422,11 @@ CONTAINER ID IMAGE COMMAND CREATED CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ``` *** + Stop kann mit –t ein Timeout gegeben werden, danach wird automatisch ein kill ausgeführt. -- -**`~$ docker history`** -####
Wie wurde ein Image zusammengesetzt? + +**`~$ docker history`
** +#### Wie wurde ein Image zusammengesetzt? Zeigt Änderungen der FS-Layer über die Zeit an. *** @@ -444,8 +445,8 @@ bfb8b5a2ad34 4 days ago /bin/sh -c #(nop) ADD file:a889e7d86acdb *** Interessant ist die SIZE-Spalte, welche Aktion wie viel zum FS-Volumen beigetragen hat ( Squashing *) -- -**`~$ docker run | VOLUMES`**
 + +**`~$ docker run | VOLUMES`
** #### Mounten von Verzeichnissen in Container Instanziieren eines einzelnen Containers @@ -494,9 +495,9 @@ ADD html/index.html /var/www/html/index.html ENTRYPOINT ["/usr/sbin/apache2"] CMD ["-D", "FOREGROUND"] ``` -- -**`~$ docker build`** -####
Definierte Container-Images bauen + +**`~$ docker build`
** +#### Definierte Container-Images bauen Anhand einer Baubeschreibung (Dockerfile) ein Image aufbauen. *** @@ -545,8 +546,8 @@ CONTAINER ID IMAGE COMMAND CREATED ~$ docker stop web && docker rm web ``` -- -**`~$ docker port
`** + +**`~$ docker port`
** #### “Anonyme“ Port-Mappings anzeigen Wenn keine expliziten Port-Mappings mit –p angegeben werden, verwendet Docker freie High-Ports. @@ -566,8 +567,8 @@ c2bbd009cf3b infrabricks/apache2:latest /usr/sbin/apache2 -D 14 secon ``` *** Keine Besonderheiten -- -**`~$ docker save | load`**
 + +**`~$ docker save | load`
** #### Container-Images als Tarballs transportieren Speichert die FS-Layer eines Images als Tarball. Die lassen sich unabhängig von Registries transportieren. @@ -586,12 +587,12 @@ $ tar tf apache2.tar ``` *** Bringt erstaunlicherweise die Prozessorlast des Hosts hoch. -- + ### Übung: -Save, danach mit rmi images löschen und
laden. +Save, danach mit rmi images löschen und laden. + -- -**`~$ docker push
`** +**`~$ docker push`
** #### Ein Image in eine (private) Registry hochladen ```bash @@ -614,7 +615,7 @@ Image 96864a7d2df3 already pushed, skipping ffdb1d64ba4d: Image successfully pushed Pushing tag for rev [ffdb1d64ba4d] on {http://127.0.0.1:5000/v1/repositories/infrabricks/apache2/tags/latest} ``` -- + ### Docker Push/Pull ```bash $ docker login @@ -624,7 +625,7 @@ $ docker push "infrabricks/apache2:latest" *** * `docker pull /:` -- + ### Sharing ![](images/gift_of_sharing_colorpg.jpg) @@ -637,8 +638,8 @@ $ docker push "infrabricks/apache2:latest" ![](images/docker-command-images-deck.png) -- -**`~$ docker run --link
`** + +**`~$ docker run --link`
** #### Container miteinander verknüpfen Ein Container wird mit einem bereits laufenden Container „verknüpft“ – der neue Container erhält Environmentvariablen und Netzwerk-Freischaltungen ***