diff --git a/slides.md b/slides.md index 5e842aa..28abf57 100644 --- a/slides.md +++ b/slides.md @@ -50,7 +50,7 @@ Git commit (server): c78088f ![](images/docker-command-registry-deck.png) - -**`~$ docker search`** +**`$ docker search`** ####
 Auf der Suche nach dem goldenen Image *** @@ -73,7 +73,7 @@ centos The official build of CentOS. 442 [OK] * Besser zum Suchen: [Docker Hub](https://registry.hub.docker.com/search) - -**`~$ docker pull`** +**`$ docker pull`** ####
 Wir brauchen das Image lokal um es zu verwenden * Download eines Repositories (oder Teilen davon) von der öffentlichen Docker-Registry. @@ -91,7 +91,7 @@ $ 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`** +**`$ docker images | inspect`** ####
Die lokalen Images ansehen Ansehen der lokal gespeicherten Images, inkl. Details @@ -109,7 +109,7 @@ $ docker inspect 70214e5d0a90 ... ``` - -**`~$ docker rmi`** +**`$ docker rmi`** ####
 Ein lokales Image entfernen Einzelne Images aus dem lokalen Cache löschen @@ -127,10 +127,10 @@ $ docker rmi 70214e5d0a90 * --force hilft im Notfall. - -**`~$ docker history`** +**`$ docker history`** #### Zeig die Befehlshistorie des Images an ```bash -vagrant@serverspecbox:~$ docker history 1934124c12e6 +$ docker history 1934124c12e6 IMAGE CREATED CREATED BY SIZE 1934124c12e6 35 hours ago /bin/sh -c #(nop) CMD [/opt/tomcat/bin/catali 0 B 9684515b6ed4 35 hours ago /bin/sh -c #(nop) USER [tomcat] 0 B @@ -148,14 +148,14 @@ c2a5714574ba 35 hours ago /bin/sh -c groupadd -r tomcat -g 4242 && ![](images/docker-command-images-deck.png) - -**`~$ docker run`** +**`$ docker run`** ####
 Das wichtigste Kommando: Container starten! Instanziieren eines einzelnen Containers Vermutlich das Kommando mit den meisten Parametern. *** ```bash -~$ docker run -ti ubuntu /bin/bash +$ docker run -ti ubuntu /bin/bash root@898c6047b8ab:/# hostname 898c6047b8ab @@ -182,42 +182,42 @@ CTRL+P CTRL+Q zum detachen der shell - Ports Freigeben - Prozess starten mit einem bestimmten Nutzer - -**`~$ docker ps`** +**`$ docker ps`** ####
 Container anzeigen Übersicht über laufende und gelaufene Container *** ```bash -~$ docker ps +$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e6aa98c81a41 127.0.0.1:5000/ubuntu:14.04 /bin/bash 6 seconds ago Up 5 seconds ecstatic_fermat -~$ docker ps -q +$ docker ps -q e6aa98c81a41 -~$ docker ps –a | less +$ docker ps –a | less ``` *** * 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. *** ```bash -~$ docker ps –a +$ docker ps –a … -~$ docker rm e6aa98c81a41 +$ docker rm e6aa98c81a41 e6aa98c81a41 ``` *** @@ -225,7 +225,7 @@ e6aa98c81a41 * Besser: Beim run direkt --rm mitgeben - -**`~$ docker logs`** +**`$ docker logs`** ####
 Ausgabe von Container anschauen *** @@ -242,7 +242,7 @@ exit * `-tail == nur die letzten x Zeilen anzeigen` - -**`~$ docker events`** +**`$ docker events`** 
#### Ereignisse des Docker Daemons ansehen Der Docker Daemon zeigt Ereignisse aus der API bzw. der Kommandozeile an. @@ -255,7 +255,7 @@ $ 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 @@ -277,20 +277,20 @@ D /etc/sysctl.conf *** * Keine Besonderheiten. Interessantes Debugging-Werkzeug. - -**`~$ docker top`** +**`$ docker top`** ####
Prozessdetails eines Containers anzeigen STDOUT/STDERR eines Containers ansehen. *** ```bash -~$ docker top d8b +$ docker top d8b UID PID PPID C STIME TTY TIME CMD root 4201 7159 0 12:16 pts/3 00:00:00 /bin/bash -~$ ps -p 4201 +$ ps -p 4201 PID TTY TIME CMD 4201 pts/3 00:00:00 bash -~$ ps -p 7159 +$ ps -p 7159 PID TTY TIME CMD 7159 ? 00:03:01 docker ``` @@ -304,10 +304,10 @@ Anzeige welche Rechte wirklich vergeben sind im /proc File System ## Ziel: Apache-Container manuell bauen
 ```bash -~$ CID=`docker run –tdi ubuntu` +$ CID=`docker run –tdi ubuntu` 4fa4778a965316f24c968e47bf19ec1d555ac131279dcadc623113b95dd3555b -~$ docker attach $CID +$ docker attach $CID root@4fa4778a9653:/# apt-get update 0% [Connecting to archive.ubuntu.com] @@ -327,16 +327,16 @@ Wenn wir apachectl -D FOREGROUD nutzen klappt es! ``` - -**`~$ docker commit`** +**`$ docker commit`** ####
Den Dateisystem-Stand festhalten Ein „Commit“ erzeugt ein neues Image auf Basis eines bestehenden Containers *** ```bash -~$ docker commit -a "infrabricks" -m "Just committed" 4fa4778a9653 +$ docker commit -a "infrabricks" -m "Just committed" 4fa4778a9653 ffdb1d64ba4d94be13c561e05c4cb6eb05b4b7ca319e9bc649aedb8c23568058 -~$ docker images +$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ffdb1d64ba4d 39 seconds ago 239.2 MB … @@ -355,7 +355,7 @@ REPOSITORY TAG IMAGE ID CREATED ## Weiter gehts - -**`~$ docker tag`** +**`$ docker tag`** ####
 Namen für Images * Ein „tag“ gibt einem Image (anhand seiner ID) einen Namen @@ -363,14 +363,14 @@ REPOSITORY TAG IMAGE ID CREATED *** ```bash -~$ docker tag ffdb1d64ba4d infrabricks/httpd +$ docker tag ffdb1d64ba4d infrabricks/httpd -~$ docker images +$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUALSIZE infrabricks/httpd latest ffdb1d64ba4d 7 minutes ago 239.2 MB -~$ docker tag ffdb1d64ba4d infrabricks/httpd:2.2 -~$ docker images +$ docker tag ffdb1d64ba4d infrabricks/httpd:2.2 +$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUALSIZE infrabricks/httpd latest ffdb1d64ba4d 8 minutes ago 239.2 MB infrabricks/httpd 2.2 ffdb1d64ba4d 8 minutes ago 239.2 MB @@ -384,7 +384,7 @@ infrabricks/httpd 2.2 ffdb1d64ba4d 8 minutes ago ### Ziel: Apache-Container starten
 ```bash -~$ docker run \ +$ docker run \ -tdi \ -p 127.0.0.1:8000:80
 -e APACHE_RUN_USER=www-data \ -e APACHE_RUN_GROUP=www-data \ @@ -395,42 +395,41 @@ infrabricks/httpd 2.2 ffdb1d64ba4d 8 minutes ago /usr/sbin/apache2 -D FOREGROUND 04cbe4ab97d71594b4b5383d07d8a499691be1dd5e027482edea48e7fe685084 -vagrant@docker-workshop:~$ netstat -nltp | grep 8000 -(No info could be read for "-p": geteuid()=1000 but you should be root.) +$ netstat -nlt | grep 8000 tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN - -vagrant@docker-workshop:~$ curl http://127.0.0.1:8000/ +$ 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 *** ```bash -~$ docker ps +$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 04cbe4ab97d7 infrabricks/httpd:2.2 /usr/sbin/apache2 -D 11 minutes ago Up 11 minutes 127.0.0.1:8000->80/tcp cocky_fermi -~$ docker stop 04cb +$ docker stop 04cb 04cb -~$ docker ps +$ docker ps 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`** +**`$ docker history`** ####
Wie wurde ein Image zusammengesetzt? Zeigt Änderungen der FS-Layer über die Zeit an. *** ```bash -~$ docker history infrabricks/httpd +$ docker history infrabricks/httpd IMAGE CREATED CREATED BY SIZE ffdb1d64ba4d About an hour ago /bin/bash 34.76 MB 96864a7d2df3 4 days ago /bin/sh -c #(nop) CMD [/bin/bash] 0 B @@ -445,15 +444,15 @@ 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 Vermutlich das Kommando mit den meisten Parametern. *** ```bash -~$ mkdir test -~$ touch test/x +$ mkdir test +$ touch test/x $ docker run -ti -v /home/vagrant/test:/y ubuntu @@ -472,8 +471,8 @@ drwxr-xr-x 22 root root 4096 Sep 22 13:24 .. ## Ziel: Bauanleitung für Apache-Container
 ```bash -~$ mkdir apache2-build -~$ cd apache2-build/ +$ mkdir apache2-build +$ cd apache2-build/ ~/apache2-build$ mkdir html ~/apache2-build$ echo 'Docker world' > html/index.html @@ -495,7 +494,7 @@ ENTRYPOINT ["/usr/sbin/apache2"] CMD ["-D", "FOREGROUND"] ``` - -**`~$ docker build`** +**`$ docker build`** ####
Definierte Container-Images bauen Anhand einer Baubeschreibung (Dockerfile) ein Image aufbauen. @@ -524,11 +523,11 @@ Successfully built 6ffc9f73c6d0 ## Ziel: Apache-Container starten
 ```bash -~$ docker images infrabricks/apache2 +$ docker images infrabricks/apache2 REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE cassini/apache2 latest 03783441cb05 About a minute ago 239.2 MB -~$ docker run \ +$ docker run \ --name="web" \ -p 127.0.0.1:9000:80 \ --detach \ @@ -536,17 +535,17 @@ cassini/apache2 latest 03783441cb05 About a minute ago 2a43c79b883dc469a0e56db959f758cd8dcc788aa76516990bcbb3a6f425fb32 -~$ docker ps +$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2a43c79b883d infrabricks/apache2:latest /usr/sbin/apache2 -D 37 seconds ago Up 36 seconds 127.0.0.1:9000->80/tcp web -~$ curl http://127.0.0.1:9000/ +$ curl http://127.0.0.1:9000/ Docker world -~$ docker stop web && docker rm web +$ 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. @@ -554,20 +553,20 @@ Das Port-Kommando zeigt diese an. *** ```bash -~$ docker run -P --detach infrabricks/apache2 +$ docker run -P --detach infrabricks/apache2 c2bbd009cf3bd5846ac1f79e75c6b3502964afb49d6ad45ff190b51a2b85bfb9 -~$ docker ps +$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c2bbd009cf3b infrabricks/apache2:latest /usr/sbin/apache2 -D 14 seconds ago Up 13 seconds 0.0.0.0:49153->80/tcp silly_wozniak -~$ docker port c2bbd009cf3b 80 +$ docker port c2bbd009cf3b 80 0.0.0.0:49153 ``` *** 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. @@ -591,16 +590,16 @@ Bringt erstaunlicherweise die Prozessorlast des Hosts hoch. Save, danach mit rmi images löschen und
laden. - -**`~$ docker push
`** +**`$ docker push
`** #### Ein Image in eine (private) Registry hochladen ```bash -~$ docker tag ffdb1d64ba4d 127.0.0.1:5000/infrabricks/apache2:latest -~$ docker images +$ docker tag ffdb1d64ba4d 127.0.0.1:5000/infrabricks/apache2:latest +$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE … 127.0.0.1:5000/infrabricks/apache2 latest ffdb1d64ba4d About an hour ago 239.2 MB -~$ docker push 127.0.0.1:5000/infrabricks/apache2 +$ docker push 127.0.0.1:5000/infrabricks/apache2 The push refers to a repository [127.0.0.1:5000/infrabricks/apache2] (len: 1) Sending image list Pushing repository 127.0.0.1:5000/infrabricks/apache2 (1 tags) @@ -638,18 +637,18 @@ $ 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 *** ```bash -~$ docker run -tdi --name "n1" -p 8000:8000 ubuntu +$ docker run -tdi --name "n1" -p 8000:8000 ubuntu cc79ec0c9ae0ae04f50736ae791f2ac59362891eaa9f72bc563bd78ad69aeb48 -~$ docker run -tdi --name "n2" -p 9000:9000 --link="n1:n1" ubuntu +$ docker run -tdi --name "n2" -p 9000:9000 --link="n1:n1" ubuntu f8c1ac2643250d31e361709c1523f14eeb5e2404bcc7bf556f520cb2a8349967 -~$ docker attach n2 +$ docker attach n2 root@f8c1ac264325:/# env | grep ^N1 N1_PORT_8000_TCP_PORT=8000