Beispiel für Starten eine Containers
docker run –detach –name web <docker.hub.Container> (-d: Backround) (Beispiel nginx.latest)
docker run –interactive –tty –link web:web –name web_test <dockerHub.Container> /bin/sh (-i: stdin, -tty: virt. Terminal starten) (Beispiel busybox.latest)
Beispiel (Docker-PDF)
- docker run –detach –name web nginx:latest
- docker run -d –name mailer dockerinaction/ch2_mailer
Beachte docker create würde ebenfalls funktionieren, startet aber den Prozess nicht) - docker run –interactive –tty –link web:web –name web_test busybox:latest /bin/sh
# help
# exit - docker start web_test
- docker attach web_test
# wget -O – http://web:80/
# <STRG>+<PQ> - docker ps
- docker run -it –name agent –link web:insideweb –link mailer:insidemailer dockerinaction/ch2_agent
- docker restart web
- docker logs web
- docker exec web_test ps (im Prozessraum web_test wird ps ausgeführt)
- docker run –pid host busybox:latest ps (zeigt alle Prozesse von Containern an, –pid host: ist an den Host-Prozessraum gebunden, kein eigener Namensraum wie sonst)
- Konflikt durch zwei WebServer im gleichen Namensraum:
docker run –d –name webConflict nginx:latest
docker logs webConflict
docker exec webConflict nginx -g ‚daemon off;‘
=> Portkonflikt - docker rename webConflict webKonflikt
docker ps - docker exec <ID> ps (ID oder name aus der Liste möglich)
- Protokollierung der ID (hier create anstatt run, s.o.):
CID=$(docker create nginx:latest)
echo $CID - Andere Variante:
docker create –cidfile /tmp/web.cid nginx - CID=$(docker ps –latest –quiet [–no-trunc])
echo $CID
liefert die ID des zuletzt erzeugten Containers - Verlinkung mit CIDs
MAILER_CID=$(docker run -d dockerinaction/ch2_mailer)
WEB_CID=$(docker create nginx)
AGENT_CID=$(docker create –link $WEB_CID:insideweb \
–link $MAILER_CID:insidemailer \
dockerinaction/ch2_agent) - Ansicht aller Container (auch der im exited state)
docker ps -a - Reihenfolge wichtig beim Starten
docker start $WEB_CID
docker start $AGENT_CID - Löschen im Zustand exited: docker rm <CID>
- Mitgeben von ENV-Variablen
docker run –env MY_ENVIRONMENT_VAR=“this is a test“ \
busybox:latest \
env - sudo service –status-all
- sudo service docker stop
- sudo service docker start (alle Docker-Container sind dann exited)
- Automatisches Restartverhalten
docker run -d –name backoff-detector –restart always busybox date
docker logs -f backoff-detector - docker run -d -p 80:80 –name lamp-test tutum/lamp
- docker top lamp-test
- docker exec lamp-test ps (Prozess-IDs ermitteln)
Docker Theorie
Funktioniert leider nicht so
- docker run -d –name wp –read-only wordpress:4
docker inspect –format „{{.State.Running}}“ wp
docker logs wp
(sollten false sein bzw. Fehler liefern) - Fehler wegen fehlender MySQL-Datenbankdocker run -d –name wpdb \
-e MYSQL_ROOT_PASSWORD=ch2demo \
mysql:5
docker run -d –name wp2 –link wpdb:mysql -p 80 –read-only wordpress:4
Problem ist das notwendige, zum Schreiben ausgelegte var-Verzeichnis. Wird gelöst durch
WP_CID=$(docker create –link $DB_CID:mysql –name wp_$CLIENT_ID -p 80 -v /run/lock/apache2/ -v /run/apache2/
-e WORDPRESS_DB_NAME=$CLIENT_ID –read-only wordpress:4)
Docker Stati
Docker kann konfiguriert werden
- Never restart (default)
- Attempt to restart when a failure is detected
- Attempt for some predetermined time to restart when a failure is detected
- Always restart the container regardless of the condition