|
|
| Zeile 1: |
Zeile 1: |
| ; <nowiki>Motivation CI/CD: WFM (''Works For Me'')</nowiki>
| |
| Auf dem CI-Server muss man eine Arbeitsumgebung konfigurieren und bereitstellen, für Java-basierte Projekte muss beispielsweise ein JDK existieren und man benötigt Tools wie Maven oder Gradle, um die Buildskripte auszuführen
| |
| * Je nach Projekt braucht man dann noch weitere Tools und Bibliotheken
| |
| * Diese Konfigurationen sind unabhängig vom CI-Server und werden üblicherweise nicht direkt installiert, sondern über eine Virtualisierung bereitgestellt
| |
|
| |
|
| Selbst wenn man keine CI-Pipelines einsetzt, hat man in Projekten mit mehreren beteiligten Personen häufig das Problem "''WFM''" ("works for me")
| |
| * Jeder Entwickler hat sich auf ihrem Rechner eine Entwicklungsumgebung aufgesetzt und nutzt in der Regel seine bevorzugte IDE oder sogar unterschiedliche JDK-Versionen
| |
| * Dadurch kann es schnell passieren, dass Probleme oder Fehler auftreten, die sich nicht von allen Beteiligten immer nachvollziehen lassen
| |
| * Hier wäre eine einheitliche Entwicklungsumgebung sinnvoll, die in einer "schlanken" Virtualisierung bereitgestellt wird
| |
|
| |
| Als Entwickler kann man zeitgleich in verschiedenen Projekten beteiligt sein, die unterschiedliche Anforderungen an die Entwicklungstools mit sich bringen
| |
| * Es könnte beispielsweise passieren, dass man zeitgleich drei bestimmte Python-Versionen benötigt
| |
| * In den meisten Fällen schafft man es (mit ein wenig Aufwand), diese Tools nebeneinander zu installieren
| |
| * Oft ist das in der Praxis aber schwierig und fehleranfällig
| |
|
| |
| In diesen Fällen kann eine Virtualisierung helfen
| |
|
| |
| == Link-Sammlung ==
| |
| * Wikipedia: Docker
| |
| * Wikipedia: Virtuelle Maschinen
| |
| * Docker: Überblick, Container
| |
| * Docker: HowTo
| |
| * DockerHub: Suche nach fertigen Images
| |
| * Docker und Java
| |
| * Dockerfiles: Best Practices
| |
| * Gitlab, Docker
| |
| * VSCode: Entwickeln in Docker-Containern
| |
| * [DockerInAction] und [DockerInPractice]
| |
|
| |
| ; VSCode
| |
| VSCode kann über das Remote-Plugin sich (u.a.) mit Containern verbinden und dann im Container arbeiten (editieren, compilieren, debuggen, testen, ...)
| |
|
| |
| In dieser kurzen Einheit kann ich Ihnen nur einen ersten Einstieg in das Thema geben
| |
| * Wir haben uns beispielsweise nicht Docker Compose oder Kubernetes angeschaut, und auch die Themen Netzwerk (zwischen Containern oder zwischen Containern und anderen Rechnern) und Volumnes habe ich außen vor gelassen
| |
| * Dennoch kommt man in der Praxis bereits mit den hier vermittelten Basiskenntnissen erstaunlich weit
| |
|
| |
| ; Videos (YouTube)
| |
| * VL Einführung in Docker
| |
| * Demo Container in der Konsole
| |
| * Demo GitLab CI/CD und Docker
| |
| * Demo GitHub Actions und Docker
| |
| * Demo VSCode und Docker
| |
|
| |
| ; Videos (HSBI-Medienportal)
| |
| * VL Einführung in Docker
| |
|
| |
| ; Lernziele
| |
| * (K2) Unterschied zwischen Containern und VMs
| |
| * (K2) Einsatzgebiete für Container
| |
| * (K2) Container laufen als abgeschottete Prozesse auf dem Host - kein Sandbox-Effekt
| |
| * (K3) Container von DockerHub ziehen
| |
| * (K3) Container starten
| |
| * (K3) Eigene Container definieren und bauen
| |
| * (K3) Einsatz von Containern in GitLab CI/CD und GitHub Actions
| |
| * (K3) Einsatz von VSCode und Containern
| |
|
| |
| == Wrap-Up ==
| |
| * Schlanke Virtualisierung mit Containern (kein eigenes OS)
| |
| * ''Kein'' Sandbox-Effekt
| |
| * Begriffe: Docker-File vs. Image vs. Container
| |
| * Ziehen von vordefinierten Images
| |
| * Definition eines eigenen Images
| |
| * Arbeiten mit Containern: lokal, CI/CD, VSCode
| |
|
| |
| Quizzes
| |
| * Quiz Docker (ILIAS)
| |
|
| |
| Quellen
| |
| * [DockerInAction] '''Docker in Action''' Nickoloff, D., Manning Publications, 2019. ISBN 978-1-6172-9476-1
| |
| * [DockerInPractice] '''Docker in Practice''' Miell, I. und Sayers, A. H., Manning Publications, 2019. ISBN 978-1-6172-9480-8
| |
| * [Inden2013] '''Der Weg zum Java-Profi''' Inden, M., dpunkt.verlag, 2013. ISBN 978-3-8649-1245-0
| |
|
| |
| '''Docker/Tutorial''' - Virtualisierungsplattform [[Docker]] nutzen
| |
|
| |
| == Beschreibung ==
| |
| ; Tutorial-Teile
| |
| # [[Docker/Tutorial]]
| |
| # [[Docker/Tutorial/Arbeiten mit Docker]]
| |
| # [[Docker/Tutorial/Images und Container]]
| |
| # [[Docker/Tutorial/Links]]
| |
|
| |
|
| |
| ; Tipp
| |
| : Docker-Container und -Images sind meistens generisch, aber können nach Bedarf auch sehr individuell gestaltet werden
| |
| :* In dem Artikel zu [https://www.ionos.de/digitalguide/server/knowhow/docker-container/ Docker-Containern] können Sie sich weiter informieren
| |
| == Docker-Hub ==
| |
| Docker-Hub ist ein Cloud-Repository für Container, in dem Docker-Images gespeichert und verteilt werden. Weitere Informationen finden Sie unter [[Docker/Hub|Docker-Hub]]
| |
|
| |
|
| |
|
| |
|
| |
| ; Tipp
| |
| : 2017 wurde die Docker-Engine in ''Docker Community Edition'' (abgekürzt Docker CE) umbenannt, jedoch wird in der offiziellen Dokumentation und in den Docker-Repositorys meistens noch der alte Name verwendet
| |
| :* Neben der Docker-CE gibt es auch die ''Docker Enterprise Edition'' (Docker EE), die einige Premium-Features hat
| |
| :* Diese ist allerdings nicht kostenfrei und eignet sich eher für Unternehmen
| |