© Liashko/Shutterstock.com
Entwickler Magazin
Packer und Jib als Alternativen zur klassischen Dockerfile-Methode

Kreative Wege, Docker Images zu bauen

Ist der klassische Weg, Docker Images über docker build zu bauen, wirklich in jedem Fall die beste Art und Weise? In diesem Artikel geht Roland Huß, Software Engineer bei Red Hat, dieser Frage auf den Grund und stellt zwei alternative und kreative Wege vor, Docker Images zu erstellen.

Roland Huß


Erinnert ihr euch noch daran, wie ihr euer erstes Docker Image gebaut habt? Ein Basis-Image auswählen, ein simples Dockerfile schreiben, und mithilfe von docker build wird das Ganze dann gebaut. Das ist eigentlich schon zu einfach, um wahr zu sein. docker build ist auch heute noch der kanonische Weg, Docker Images zu bauen. Aber ist es auch immer die beste Methode für alle Fälle? Welche Alternativen gibt es? In diesem Artikel präsentiere ich zwei alternative und kreative Wege, Docker Images zu bauen.

Packer

Packer ist ein Open-Source-Werkzeug von Hashicorp, mit dem Machine Images für die verschiedensten Plattformen wie Amazon EC2, DigitalOcean, Google Compute Engine, Virtual Box, VMWare oder eben auch Docker erstellt werden können. Viele kennen Packer als den Mechanismus zur Erstellung sogenannter Boxes als Grundlage für Vagrant-Konfigurationen.

Mit einer einzigen Konfigurationsdatei können verschiedene, gleichartige Images erzeugt werden. Dabei ersetzt Packer kein Konfigurationsmanagementsystem (CMS) wie Puppet oder Ansible. Im Gegenteil: CM-Systeme werden genutzt, um die Machine Images reproduzierbar zu bestücken, bevor das Image finalisiert wird.

Packer ist ein in Go geschriebenes Kommandozeilentool, das als einzelnes Binary installiert und für verschiedene Plattformen bereitgestellt wird. Die zu erstellenden Images werden dann über Templates beschrieben. Innerhalb der Templates nutzt Packer drei wichtige Abstraktionen:

Builders dienen zum eigentlichen Erstellen der Images im jeweiligen Zielformat. In einem Template können mehrere Builder angegeben werden, die jeweils individuell konfiguriert werden können. Für jedes der konfigurierten Zielsysteme wird parallel ein Image gebaut.Provisioners werden genutzt, um die Images zu bestücken. In diesem Schritt können Dateien kopiert und Shell-Skripte ausgeführt werden. Oder aber es werden vollwertige CM-Systeme wie Puppet, Chef oder Ansible aufgerufen, um Anwendungen in dem Image zu installieren und zu konfigurieren.Post Processors werden aufgerufen, nachdem die finalen Images erzeugt worden sind. Damit kann beispielsweise ein gerade gebautes Docker Image getaggt oder zu einer Registry gepusht werden.

Insbesondere zur Provisionierung von klassischen Virtuellen Maschinen ist Packer sehr gut geeignet, da es hierfür ja oft keinen intrinsischen Build-Mechanismus gibt. Im Gegensatz dazu bietet Docker ja mit dem Dockerfile bereits einen nativen Weg, Docker Images zu erstellen. Dennoch kann Packer eine interessante Altern...

Entwickler Magazin
Packer und Jib als Alternativen zur klassischen Dockerfile-Methode

Kreative Wege, Docker Images zu bauen

Ist der klassische Weg, Docker Images über docker build zu bauen, wirklich in jedem Fall die beste Art und Weise? In diesem Artikel geht Roland Huß, Software Engineer bei Red Hat, dieser Frage auf den Grund und stellt zwei alternative und kreative Wege vor, Docker Images zu erstellen.

Roland Huß


Erinnert ihr euch noch daran, wie ihr euer erstes Docker Image gebaut habt? Ein Basis-Image auswählen, ein simples Dockerfile schreiben, und mithilfe von docker build wird das Ganze dann gebaut. Das ist eigentlich schon zu einfach, um wahr zu sein. docker build ist auch heute noch der kanonische Weg, Docker Images zu bauen. Aber ist es auch immer die beste Methode für alle Fälle? Welche Alternativen gibt es? In diesem Artikel präsentiere ich zwei alternative und kreative Wege, Docker Images zu bauen.

Packer

Packer ist ein Open-Source-Werkzeug von Hashicorp, mit dem Machine Images für die verschiedensten Plattformen wie Amazon EC2, DigitalOcean, Google Compute Engine, Virtual Box, VMWare oder eben auch Docker erstellt werden können. Viele kennen Packer als den Mechanismus zur Erstellung sogenannter Boxes als Grundlage für Vagrant-Konfigurationen.

Mit einer einzigen Konfigurationsdatei können verschiedene, gleichartige Images erzeugt werden. Dabei ersetzt Packer kein Konfigurationsmanagementsystem (CMS) wie Puppet oder Ansible. Im Gegenteil: CM-Systeme werden genutzt, um die Machine Images reproduzierbar zu bestücken, bevor das Image finalisiert wird.

Packer ist ein in Go geschriebenes Kommandozeilentool, das als einzelnes Binary installiert und für verschiedene Plattformen bereitgestellt wird. Die zu erstellenden Images werden dann über Templates beschrieben. Innerhalb der Templates nutzt Packer drei wichtige Abstraktionen:

Builders dienen zum eigentlichen Erstellen der Images im jeweiligen Zielformat. In einem Template können mehrere Builder angegeben werden, die jeweils individuell konfiguriert werden können. Für jedes der konfigurierten Zielsysteme wird parallel ein Image gebaut.Provisioners werden genutzt, um die Images zu bestücken. In diesem Schritt können Dateien kopiert und Shell-Skripte ausgeführt werden. Oder aber es werden vollwertige CM-Systeme wie Puppet, Chef oder Ansible aufgerufen, um Anwendungen in dem Image zu installieren und zu konfigurieren.Post Processors werden aufgerufen, nachdem die finalen Images erzeugt worden sind. Damit kann beispielsweise ein gerade gebautes Docker Image getaggt oder zu einer Registry gepusht werden.

Insbesondere zur Provisionierung von klassischen Virtuellen Maschinen ist Packer sehr gut geeignet, da es hierfür ja oft keinen intrinsischen Build-Mechanismus gibt. Im Gegensatz dazu bietet Docker ja mit dem Dockerfile bereits einen nativen Weg, Docker Images zu erstellen. Dennoch kann Packer eine interessante Altern...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang