Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Tipps und Tricks im Umgang mit Docker

336 views

Published on

Mein Vortrag auf der x-celerate 2017

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Tipps und Tricks im Umgang mit Docker

  1. 1. Tipps und Tricks im Umgang mit Docker Nicholas Dille Microsoft MVP & Docker Captain
  2. 2. Nicholas Dille Ehemann, Vater, Geek, Autor, Aikidoka DevOps Engineer @ Haufe-Lexware Microsoft MVP seit 2010 Docker Captain seit 2017 http://dille.name @NicholasDille
  3. 3. CI/CD Dockerfile Image Registry docker-compose.yml Repository MonitoringData Orchestration Host Container Service Secrets
  4. 4. Reproduzierbarkeit durch Automatisierung Dockerfile / docker-compose / docker-machine / CI/CD
  5. 5. FROM ubuntu FROM ubuntu:xenial-20170915 Niemals :latest verwenden / Reproduzierbarkeit sicherstellen
  6. 6. RUN apt-get update && apt-get –y upgrade Nicht alle Pakete aktualisieren
  7. 7. > Ableiten von Code nicht von Images / Ausnahme für offizielle Images
  8. 8. Ableiten von Code nicht von Images / Ausnahme für offizielle Images Image Layer 1 Layer 2 Layer 3
  9. 9. FROM ubuntu:xenial-20170915 ENV http_proxy=“http://1.2.3.4:8080“ RUN apt update docker build --build-arg http_proxy=… docker run --env http_proxy=… Keine hartkodierten Umgebungsspezifika
  10. 10. FROM ubuntu:xenial-20170915 ENV JAVA_VER=“8u133“ RUN apt –y install openjdk-jre-8=${JAVA_VER}* Versionsnummern in Variablen definieren
  11. 11. Images wiederverwenden base agent gocd-agent jenkins-slave telegraf ceph registry-ceph influxdb-ceph
  12. 12. Nur ein Dienst pro Image / Init-Prozess für mehrere Prozesse (tini, dumb-init, supervisor, Windows Service Manager) Container nginx (PID 1) Container init (PID 1) nginx (PID 2) php-fpm (PID 3) Container nginx (PID 1) php-fpm (PID 2) Container entrypoint.sh (PID 1) nginx (PID 2) php-fpm (PID 3)
  13. 13. Rechte einschränken mit USER
  14. 14. Rückverfolgbarkeit durch Microlabeling
  15. 15. FROM ubuntu:xenial-20170915 LABEL maintainer=team@x-celerate.de org.label-schema.build-date=„${BUILD_DATE}" org.label-schema.name=„${IMAGE_NAME}" org.label-schema.description=„${IMAGE_DESCRIPTION}" org.label-schema.url=„${PROJECT_URL}" org.label-schema.vcs-ref=„${COMMIT_HASH}" org.label-schema.vcs-url=„${REPO_URL}" org.label-schema.vendor=„${VENDOR_NAME}" org.label-schema.version=„${IMAGE_VERSION}" org.label-schema.schema-version="1.0" $ docker build --build-arg BUILD_DATE=`date +%s` … Rückverfolgbarkeit durch Microlabeling / label-schema.org
  16. 16. Continuous Integration / Image prüfen / Test-Deployments Bauen Tag mit Buildnr. Tag als :dev Tag als :latest Testen Funktionalität prüfen Veröffentlichen Tag als :stable
  17. 17. Signierte Pakete / HTTPS / Prüfsummen
  18. 18. Images aktualisieren docker build --pull Unterdrücken des ENTRYPOINT docker run -d --entrypoint bash ubuntu –c 'while true; do sleep 5; done‘ Ausgabe formatieren docker ps --format "table {{.Names}}t{{.Image}}t{{.Status}}"
  19. 19. Schnelles Testen docker run -it –rm Aufräumen docker system prune Aufräumen für Image-Builds docker images -q | xargs docker rmi -f docker images -q | % { docker rmi -f $_ }
  20. 20. Informiert eigene Best Practices entwickeln

×