SlideShare ist ein Scribd-Unternehmen logo
SOURCE TO IMAGE
Vom Code zum fertigen Image mit einer Build-Chain
basierend auf Docker
Agenda
Source to Image 2
1 Konzeption von Build-Vorgängen
2 Warum Build-Vorgänge auslagern?
3 Demonstration
4 Fazit
Konzeption von Build-Vorgängen
Konzeption von Build-Vorgängen
Source to Image 4
Source-
Code Container
• Build-Artefakte werden im Container generiert
• Nicht mehr notwendige Build-Dependencies sind zur Laufzeit verfügbar
• Simple Lösung
• Schnell zu implementieren
Konzeption von Build-Vorgängen
Source to Image 5
Source-
Code
Build-
Container
Service-
Container
Binary
• Build-Artefakte werden in einem gesonderten Container erzeugt
• Build-Dependencies sind zur Laufzeit nicht mehr verfügbar
• Leichtgewichtigere Service-Container
Konzeption von Build-Vorgängen
Source to Image 6
Source-
Code
Build-
Container
Service-
Container
Binary
Source-
Code
Service-
Container
Service-
Container
Binary
InfrastrukturArtefakt-VerwaltungContinious-
Integration
Source-Code-
Verwaltung
Konzeption von Build-Vorgängen
Source to Image 7
Source-
Code
Build-
Container
Service-
Container
Binary
Source-
Code
Service-
Container
Service-
Container
Binary
Warum Build-Vorgänge
auslagern?
Vorteile
Source to Image 9
Sicherheit
Gesteigerte Build-Geschwindigkeit
• Reduzierte Downloadzeit
• Schnellere Buildvorgänge für Artefakte
Performance
• Kleinere Images
• Keine unnötigen Dateien
Einheitliche Builds
• Build-Container /-Images sind immer gleich
• Keine fehlenden Dependencies
• Weniger potentielle Schwachstellen
• Leichte Wartbarkeit
Demonstration
Demonstration - Grundlagen
Source to Image 11
• Aufbau des Dockerfiles für den Build-
Vorgang und die Bereitstellung
• Je nach Phase ändern sich Passagen
Simpler Webservice basierend auf GO
- Kompilierte Größe: 3,9 MB
Anwendung Dockerfile
Demonstration
Source to Image 12
Phase 1 - Build-Vorgang mit Standards
• Full-Image mit allen Build-Dependencies
• Golang-onbuild Image wird verwendet
Demonstration
Source to Image 13
Verwendung des Standardimages
• Alle Build-Dependencies sind noch enthalten
• Nicht notwendige Binaries sind enthalten
Phase 1 - Fazit
Demonstration
Source to Image 14
Phase 2 - Build-Vorgang mit kleinerem Grundimage
• Kleineres Image mit allen Dependencies
• golang:alpine Image wird verwendet
Demonstration
Source to Image 15
Verkleinerung des Images durch Verwendung des Golang:Alpine-Images
• Geringere Größe als das Standardimage für GO
• Unnötige Daten sind noch enthalten
• Gute Grundlage für einen Build-Container
Phase 2 - Fazit
Demonstration
Source to Image 16
Build-
Container
Service-
Container
Binary
Möglichkeiten für diesen Vorgang:
• Verwendung von “docker cp“
Beispiel: docker cp IDCONTAINER:/go/bin/pokedex /tmp/
• Verwendung von Volumes
Beispiel: docker run -v /tmp/:/tmp IMAGENAME
• Verwendung von Docker in Docker
Auslagerung des Build-Vorgangs
Demonstration
Source to Image 17
Verkleinerung des Laufzeit-Images durch Verwendung des Alpine-Images
• Geringe Größe
• Extrahierung der Binaries
• Reduktion auf das Notwendigste
Phase 3 - Fazit
Demonstration
Source to Image 18
Durch Verwendung eines Images von Scratch erhalten wir noch eine kleine Reduktion
• Geringere Größe
• Minimalste Bereitstellung
Phase 4 - Fazit
Fazit
Source to Image 19
Golang Golang:Alpine Alpine Scratch
709 MB 263 MB 7.99 MB 4.01 MB
30 Sicherheitslücken 30 Sicherheitslücken 0 Sicherheitslücken 0 Sicherheitslücken
Geringer Aufwand Geringer Aufwand Gesteigerter Aufwand Hoher Aufwand
VIELEN DANK FÜR IHRE
AUFMERKSAMKEIT
Franz-Schubert Straße 75
70195 Stuttgart
+49 711 699 475 60
info@dibuco.de
www.dibuco.de

Weitere ähnliche Inhalte

Was ist angesagt?

FMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
FMK2015: Einführung in Codeversionierungssysteme by Thomas HirtFMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
FMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
Verein FM Konferenz
 
GIT / SVN
GIT / SVNGIT / SVN
GIT / SVN
Torben Brodt
 
Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014
Christian Giesswein
 
OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!
Tobias Schneck
 
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
Torben Knerr
 
Jenkins Acceleration
Jenkins AccelerationJenkins Acceleration
Jenkins Acceleration
Patrick Paechnatz
 
FMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas Hirt
FMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas HirtFMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas Hirt
FMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas Hirt
Verein FM Konferenz
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCamp
Werner Keil
 
Technische Gründe für schlechte Entwicklungsperformance
Technische Gründe für schlechte EntwicklungsperformanceTechnische Gründe für schlechte Entwicklungsperformance
Technische Gründe für schlechte Entwicklungsperformance
OPEN KNOWLEDGE GmbH
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
Steven Grzbielok
 
WebDevOps Samson deployment
WebDevOps Samson deploymentWebDevOps Samson deployment
WebDevOps Samson deployment
Markus Blaschke
 
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
Klaus Bild
 
TechTalkThursday 02.03.2017: Container-Orchestrierung mit OpenShift - Unser W...
TechTalkThursday 02.03.2017: Container-Orchestrierung mit OpenShift - Unser W...TechTalkThursday 02.03.2017: Container-Orchestrierung mit OpenShift - Unser W...
TechTalkThursday 02.03.2017: Container-Orchestrierung mit OpenShift - Unser W...
nine
 
Versionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und GitVersionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und Git
paultcochrane
 
AdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep DiveAdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep Dive
Klaus Bild
 
Quarkus, GraalVM und co. Java in der Cloud-Native Welt
Quarkus, GraalVM und co. Java in der Cloud-Native WeltQuarkus, GraalVM und co. Java in der Cloud-Native Welt
Quarkus, GraalVM und co. Java in der Cloud-Native Welt
Michael Frembs
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!
JanWeinschenker
 
Datenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBaseDatenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBase
Benjamin Schmid
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
Steffen Gebert
 

Was ist angesagt? (19)

FMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
FMK2015: Einführung in Codeversionierungssysteme by Thomas HirtFMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
FMK2015: Einführung in Codeversionierungssysteme by Thomas Hirt
 
GIT / SVN
GIT / SVNGIT / SVN
GIT / SVN
 
Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014
 
OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!
 
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
 
Jenkins Acceleration
Jenkins AccelerationJenkins Acceleration
Jenkins Acceleration
 
FMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas Hirt
FMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas HirtFMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas Hirt
FMK2015: Erste Schritte mit einem Codeversionierungssystem by Thomas Hirt
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCamp
 
Technische Gründe für schlechte Entwicklungsperformance
Technische Gründe für schlechte EntwicklungsperformanceTechnische Gründe für schlechte Entwicklungsperformance
Technische Gründe für schlechte Entwicklungsperformance
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
 
WebDevOps Samson deployment
WebDevOps Samson deploymentWebDevOps Samson deployment
WebDevOps Samson deployment
 
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
 
TechTalkThursday 02.03.2017: Container-Orchestrierung mit OpenShift - Unser W...
TechTalkThursday 02.03.2017: Container-Orchestrierung mit OpenShift - Unser W...TechTalkThursday 02.03.2017: Container-Orchestrierung mit OpenShift - Unser W...
TechTalkThursday 02.03.2017: Container-Orchestrierung mit OpenShift - Unser W...
 
Versionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und GitVersionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und Git
 
AdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep DiveAdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep Dive
 
Quarkus, GraalVM und co. Java in der Cloud-Native Welt
Quarkus, GraalVM und co. Java in der Cloud-Native WeltQuarkus, GraalVM und co. Java in der Cloud-Native Welt
Quarkus, GraalVM und co. Java in der Cloud-Native Welt
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!
 
Datenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBaseDatenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBase
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 

Ähnlich wie Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend auf Docker

Docker for Windows / Windows Container
Docker for Windows / Windows ContainerDocker for Windows / Windows Container
Docker for Windows / Windows Container
Thomas Wilhelm Wiefel
 
Docker Einführung @GPN15
Docker Einführung @GPN15Docker Einführung @GPN15
Docker Einführung @GPN15
m1no
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
GWAVA
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
Andreas Koop
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
enpit GmbH & Co. KG
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Andreas Wissel
 
Serverless: The Missing Manual
Serverless: The Missing ManualServerless: The Missing Manual
Serverless: The Missing Manual
OPEN KNOWLEDGE GmbH
 
Umzug in die Cloud - flexible, dynamische Websites und Digital Marketing am B...
Umzug in die Cloud - flexible, dynamische Websites und Digital Marketing am B...Umzug in die Cloud - flexible, dynamische Websites und Digital Marketing am B...
Umzug in die Cloud - flexible, dynamische Websites und Digital Marketing am B...
comspace GmbH & Co. KG
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
QAware GmbH
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
Marc Müller
 
CI und Android - Wie geht das? MTC2010
CI und Android - Wie geht das? MTC2010CI und Android - Wie geht das? MTC2010
CI und Android - Wie geht das? MTC2010
Markus Kopf
 
Dev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftDev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei Technosoft
Bart Zwager
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
Peter Hecker
 
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopOSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
NETWAYS
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
OPITZ CONSULTING Deutschland
 
Agile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit Rails
Hussein Morsy
 
Tipps zur Performanceoptimierung für Liferay Portal
Tipps zur  Performanceoptimierung für Liferay PortalTipps zur  Performanceoptimierung für Liferay Portal
Tipps zur Performanceoptimierung für Liferay Portal
Stefan Hilpp
 
Das Kung Fu des Code Reviews
Das Kung Fu des Code ReviewsDas Kung Fu des Code Reviews
Das Kung Fu des Code Reviews
Christian Erhardt
 
Wordpress im docker
Wordpress im dockerWordpress im docker
Wordpress im docker
Philipp Kropp
 
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Jürgen Gutsch
 

Ähnlich wie Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend auf Docker (20)

Docker for Windows / Windows Container
Docker for Windows / Windows ContainerDocker for Windows / Windows Container
Docker for Windows / Windows Container
 
Docker Einführung @GPN15
Docker Einführung @GPN15Docker Einführung @GPN15
Docker Einführung @GPN15
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
 
Serverless: The Missing Manual
Serverless: The Missing ManualServerless: The Missing Manual
Serverless: The Missing Manual
 
Umzug in die Cloud - flexible, dynamische Websites und Digital Marketing am B...
Umzug in die Cloud - flexible, dynamische Websites und Digital Marketing am B...Umzug in die Cloud - flexible, dynamische Websites und Digital Marketing am B...
Umzug in die Cloud - flexible, dynamische Websites und Digital Marketing am B...
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
 
CI und Android - Wie geht das? MTC2010
CI und Android - Wie geht das? MTC2010CI und Android - Wie geht das? MTC2010
CI und Android - Wie geht das? MTC2010
 
Dev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftDev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei Technosoft
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
 
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopOSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
Agile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit Rails
 
Tipps zur Performanceoptimierung für Liferay Portal
Tipps zur  Performanceoptimierung für Liferay PortalTipps zur  Performanceoptimierung für Liferay Portal
Tipps zur Performanceoptimierung für Liferay Portal
 
Das Kung Fu des Code Reviews
Das Kung Fu des Code ReviewsDas Kung Fu des Code Reviews
Das Kung Fu des Code Reviews
 
Wordpress im docker
Wordpress im dockerWordpress im docker
Wordpress im docker
 
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
 

Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend auf Docker

  • 1. SOURCE TO IMAGE Vom Code zum fertigen Image mit einer Build-Chain basierend auf Docker
  • 2. Agenda Source to Image 2 1 Konzeption von Build-Vorgängen 2 Warum Build-Vorgänge auslagern? 3 Demonstration 4 Fazit
  • 4. Konzeption von Build-Vorgängen Source to Image 4 Source- Code Container • Build-Artefakte werden im Container generiert • Nicht mehr notwendige Build-Dependencies sind zur Laufzeit verfügbar • Simple Lösung • Schnell zu implementieren
  • 5. Konzeption von Build-Vorgängen Source to Image 5 Source- Code Build- Container Service- Container Binary • Build-Artefakte werden in einem gesonderten Container erzeugt • Build-Dependencies sind zur Laufzeit nicht mehr verfügbar • Leichtgewichtigere Service-Container
  • 6. Konzeption von Build-Vorgängen Source to Image 6 Source- Code Build- Container Service- Container Binary Source- Code Service- Container Service- Container Binary
  • 7. InfrastrukturArtefakt-VerwaltungContinious- Integration Source-Code- Verwaltung Konzeption von Build-Vorgängen Source to Image 7 Source- Code Build- Container Service- Container Binary Source- Code Service- Container Service- Container Binary
  • 9. Vorteile Source to Image 9 Sicherheit Gesteigerte Build-Geschwindigkeit • Reduzierte Downloadzeit • Schnellere Buildvorgänge für Artefakte Performance • Kleinere Images • Keine unnötigen Dateien Einheitliche Builds • Build-Container /-Images sind immer gleich • Keine fehlenden Dependencies • Weniger potentielle Schwachstellen • Leichte Wartbarkeit
  • 11. Demonstration - Grundlagen Source to Image 11 • Aufbau des Dockerfiles für den Build- Vorgang und die Bereitstellung • Je nach Phase ändern sich Passagen Simpler Webservice basierend auf GO - Kompilierte Größe: 3,9 MB Anwendung Dockerfile
  • 12. Demonstration Source to Image 12 Phase 1 - Build-Vorgang mit Standards • Full-Image mit allen Build-Dependencies • Golang-onbuild Image wird verwendet
  • 13. Demonstration Source to Image 13 Verwendung des Standardimages • Alle Build-Dependencies sind noch enthalten • Nicht notwendige Binaries sind enthalten Phase 1 - Fazit
  • 14. Demonstration Source to Image 14 Phase 2 - Build-Vorgang mit kleinerem Grundimage • Kleineres Image mit allen Dependencies • golang:alpine Image wird verwendet
  • 15. Demonstration Source to Image 15 Verkleinerung des Images durch Verwendung des Golang:Alpine-Images • Geringere Größe als das Standardimage für GO • Unnötige Daten sind noch enthalten • Gute Grundlage für einen Build-Container Phase 2 - Fazit
  • 16. Demonstration Source to Image 16 Build- Container Service- Container Binary Möglichkeiten für diesen Vorgang: • Verwendung von “docker cp“ Beispiel: docker cp IDCONTAINER:/go/bin/pokedex /tmp/ • Verwendung von Volumes Beispiel: docker run -v /tmp/:/tmp IMAGENAME • Verwendung von Docker in Docker Auslagerung des Build-Vorgangs
  • 17. Demonstration Source to Image 17 Verkleinerung des Laufzeit-Images durch Verwendung des Alpine-Images • Geringe Größe • Extrahierung der Binaries • Reduktion auf das Notwendigste Phase 3 - Fazit
  • 18. Demonstration Source to Image 18 Durch Verwendung eines Images von Scratch erhalten wir noch eine kleine Reduktion • Geringere Größe • Minimalste Bereitstellung Phase 4 - Fazit
  • 19. Fazit Source to Image 19 Golang Golang:Alpine Alpine Scratch 709 MB 263 MB 7.99 MB 4.01 MB 30 Sicherheitslücken 30 Sicherheitslücken 0 Sicherheitslücken 0 Sicherheitslücken Geringer Aufwand Geringer Aufwand Gesteigerter Aufwand Hoher Aufwand
  • 20. VIELEN DANK FÜR IHRE AUFMERKSAMKEIT Franz-Schubert Straße 75 70195 Stuttgart +49 711 699 475 60 info@dibuco.de www.dibuco.de