Schulung


Docker in der Softwareentwicklung




Wir betreuen und implementieren DevOps-Pipelines schon seit vielen Jahren bei Kunden. Wir sprechen als Anwender und Administratoren dieser Systeme und möchten unser Know-How weitergeben. Gerne In-House oder Remote

Schulungsanfrage

Sende uns eine Nachricht und wir melden uns bei dir!

Beschreibung


In einer sich schnell entwickelnden Technologielandschaft ist es von großer Bedeutung, innovative Lösungen zu finden, um Softwareanwendungen effizient zu entwickeln, bereitzustellen und zu skalieren. Dabei ermöglicht Docker nicht nur, Anwendungen in isolierten und portablen Containern zu erstellen und zu betreiben, sondern kann auch die Prozesse hinter Release, Test und Softwareentwicklung revolutionieren. Ziel ist es, Systemumgebungen nahe an einem Produktivstand via Infrastructure as Code ("IoC") zu beschreiben und im Entwicklungsprozess zur Verfügung zu stellen. Resultierend erhalten wir eine versionierte und sehr portabele Systemumgebung, die im Team, zwischen Abteilungen (Test, QA, ...) und auch dem Continious Integration System geteilt werden kann.

Alle Beteiligte arbeiten basierend auf der selbem Umgebung, wodurch Entwicklung, Testen, Debuggen und die Freigabe des Produkts immer in der gleichen definierten Systemumgebung durchgeführt wird. Dadurch, dass diese Systemumgebung mit versioniert werden kann, wird auch die Reproduzierbarkeit gesteigert. Da die Systemumgebung ("IoC") textuell beschrieben wird, kann diese zusammen mit dem Code der Software versioniert werden. Somit ist es möglich auch zu älteren Softwareständen nicht nur den Code, sondern auch die damalige Systemumgebung wiederherstellen zu können.


Diese Schulung ist zum größten Teil technologieoffen und kann toolseitig auf deine Anforderungen angepasst werden. Daher ist die Schulung nicht nur als Standardschulung zu empfehlen, sondern bringt In-House eine besondere Note bezüglich Anpassbarkeit, Erweiterbarkeit und der Berücksichtigung unternehmensspezifischer Anforderungen. Gerne kannst du dich im Vorfeld mit dem Coach austauschen, um die Möglichkeiten einer In-House-Schulung zu klären.


Die Agenda bildet den Umfang einer Standardschulung ab.

Technologien


Schulungsziel

Das Ziel der Dockerschulung besteht darin, den Teilnehmern das notwendige Wissen, die Fähigkeiten und die Praxiserfahrung zu vermitteln, um Docker effektiv in Entwicklungs- und Bereitstellungsprozessen einzusetzen. Dabei werden hauptsächlich die Anwendungsfälle in der Entwicklung eines Softwareprodukts selbst beleuchtet. Ziel ist eine konsistente, standardisierte und reproduzierbare Entwicklungsumgebung in der Schulung zu realisieren, um somit das Bauen, Debuggen, Testen und die Freigabe des Produktes via Containerisierung ermöglichen zu können. In der Schulung definieren wir eine Entwicklungsumgebung speziell auf eueren Anwendungsfall zugeschnitten und nutzen diese in IDE und CI/CD-Pipelines. Dabei betrachten wir mehrere Rollen in einem Entwicklungsprozess und erarbeiten zusammen in praktischen Übungen eine passende Umgebung für alle Parteien.

Zielgruppe

Dieses Training richtet sich an Entwicklungs-, Test- und QA-Teams sowie an Release Engineers oder Systemadministratoren, die ein grundlegendes Verständnis von Docker erlangen und die Technologie innerhalb eines Entwicklungsprozesses nutzen/einführen wollen.

Inhalt

Docker Einführung:

  • Was ist Docker und warum ist die Technologie wichtig?
  • Motivation: Virtuelle Maschine vs. Container
  • Architektur und Konzepte von Docker
  • Build & Test Infrastructure as Code
  • DockerHub und das Ökosystem
  • Begrifflichkeiten: Image, Registry, Container, …
  • Docker CLI


Docker Images:

  • Erstellen von Docker-Images
  • Verwendung von Dockerfiles zur Automatisierung von Build-Prozessen
  • Dockerfiles & Syntax
  • Docker Build und Multistage Build
  • Starten, Stoppen und Löschen von Containern


Docker Container

  • Docker Images ausführen 
  • Starten, Stoppen und Löschen von Containern
  • Docker Volumes erzeugen und nutzen
  • Verbindung und Kommunikation zwischen Containern (Networking & Ports)
  • Sicherheit und Isolation von Containern
  • Überwachung und Protokollierung von Docker-Anwendungen (Logging & Monitoring)


Continuous Integration 

  • Continuous Integration im Kontext von Dockerfiles
  • Automatisches Erzeugen von Images basierend auf Jenkins
  • Docker Vulnerability Scan


Docker Registry

  • Arbeiten mit öffentlichen Docker-Registries wie Docker Hub
  • Erstellen und Verwalten eigener privater Docker-Registries (z.B. Nexus oder Docker selbst)


Docker Compose & Orchestrierung

  • Verwendung von Docker Compose zur Definition und Bereitstellung von Multi-Container-Anwendungen


Docker Container in der Praxis eines Entwicklers

  • Build Container für Entwickler (z.B. Java Build Container)
  • Definierte und versionierte Buildumgebung als Code
  • Docker Container als VSCode Buildumgebung
  • Docker Container als Continuous Integration Node (Jenkins, Bamboo, Gitlab-Runner, ...)
  • Dev-Team und Jenkins nutzen dieselbe Buildumgebung
  • Orchestrierung einer Systemumgebung für Entwickler, um Test und Debugging produktiver zu gestalten
  • Unabhängige und reproduzierbare Build- und Debugumgebungen auch für ältere Softwarestände


Rollen im Entwicklungsprozess:

  • Als ein Mitglied des Dev-Teams nutzen wir Docker in unser IDE und entwickeln ein kleines Demoprodukt. 
  • Als QA-/Teams testen wir das Produkt in derselben Umgebung wie Kunde und Entwickler.
  • Wir schlüpfen in die Rolle eines Software-Detektivs und werden verschiedene Softwarestände nach Fehlern untersuchen.
  • Als Release Engineer, werden wir das Produkt via Docker-Pipeline freigeben.



Share by: