Docker: Befehle

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

 

Schreibe einen Kommentar