Virtualisierung mit Docker

Standardbefehle kennenlernen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Der Befehlsumfang innerhalb eines Docker-Buildfile ist nicht allzu umfangreich, weshalb es durchaus sinnvoll ist, sich mit jedem Befehl vertraut zu machen. Im Verlauf dieses Videos werden die verfügbaren Befehle kategorisiert und erläutert.

Transkript

Falls Sie in der Position sind, Ihr erstes Docker-Buildfile zu schreiben, wäre es natürlich entsprechend interessant zu wissen, welche Befehle Ihnen zur Verfügung stehen. Alle heute zur Verfügung stehenden Befehle möchte ich Ihnen nun im Laufe dieses Videos zeigen. Insgesamt habe ich diese Befehle in fünf Kategorien eingeordnet. Die erste Kategorie sind die Befehle des Ursprungs. Mit diesen ist man in der Lage festzulegen, wem dieses Image gebührt und von welchem Image dieses Image sich ableitet. Mit dem FROM-Statement entsprechend gibt man also ein Image an, dessen Ursprung man nutzen möchte beispielsweise ein Ubuntu-Basisimage und als Parameter von MAINTAINER gibt man nun die Person an, die dieses aktuelle Image, das gebaut werden soll, wartet. Die nächste Kategorie Befehle und auch mitunter die Wichtigsten sind die des Programmflusses. Das sind die Befehle, die tatsächlich den Container als solches, der zwischenzeitlich entsteht, verändern. Der Befehl ADD beispielsweise nimmt eine referenzierte Datei aus dem tatsächlichen Dateissystem, also dem Hostsystem und legt sie an einen bestimmten Ort in dem Container. Der Befehl COPY macht genau das Gleiche. Der wesentliche Unterschied zwischen beide ist, dass ADD nicht stupide kopiert wie COPY. Denn wenn man beispielsweise eine gezippte oder auch eine TAR-Datei benutzt, die über den ADD-Befehl angesprochen wird, so wird diese automatisch von Docker innerhalb des Containers extrahiert. Sollte man nie solch einen besonderen Fall haben, empfiehlt es sich, den COPY-Befehl zu verwenden. Mit dem Befehl RUN wird eine bereits bestehende Anwendung innerhalb dieses Containers zum Aufbau des Images ausgeführt. Das bedeutet, die binary-Datei muss entweder vorher hineinkopiert worden sein oder bereits existiert haben. Mit Hilfe von ENV setzt man eine Umgebungsvariable. Diese Umgebungsvariablen helfen oftmals dem RUN-Befehl bestimmte Vorgänge unter bestimmten Bedingungen auszuführen. Diese Logik liegt aber dann im Regelfall in dem jeweiligen Skript. Mit dem Befehl USER kann der aktuell ausführende User innerhalb des Containers ausgetauscht werden. Die dritte Kategorie an Befehlen sind die Befehle, die bei Programmstart, also bei Ausführen des Containers, nachdem das Image erzeugt worden ist, genutzt werden. Prinzipiell machen der Befehl CMD und ENTRYPOINT das Gleiche. Beide geben an, welche Anwendung auszuführen ist, wenn der Container gestartet wird. Allerdings setzt ENTRYPOINT fix fest, welche Anwendung gestartet wird und alle Parameter, die dann zusätzlich an den Container angehängt werden, werden lediglich an den jeweiligen ENTRYPOINT angehängt. CMD kann zusätzlich zu ENTRYPOINT existieren und einige optionale Standardparameter definieren. Oder alternativ kann ENTRYPOINT auch gar nicht existieren und nur CMD. Dann kann aber auch eine andere Anwendung innerhalb des Containers gestartet werden statt dem normalen Startprogramm. Die Befehle der Verlinkung teilen Docker mit, welche Daten oder auch welche Netzwerkports innerhalb des Containers nach außen hingetragen werden sollen. Mit dem Befehl VOLUME gibt man einen Pfad innerhalb des Containers, der dann von anderen Containern über das Hostsystem oder direkt von Hostsystem selber gebunden werden können um entsprechend Daten in den Container hineinzulegen oder auch herauszuholen. Mit dem Befehl EXPOSE und dann einem jeweiligen Netzwerkport wird der entsprechende Port auf dem Container automatisch freigegeben bei entsprechender Nutzung von Kommandozeilenparametern oder alternativ wenn Container miteinander verlinkt werden, werden genau diese Ports automatisch dem anderen Container freigestellt. Der letzte mögliche Befehl ist etwas, das den Bildprozess selbst betrifft. Das ist die ONBUILD-Instruktion. Die ONBUILD-Instruktion kann alle anderen bereits genannten Befehle schachteln und nur dann ausführen, wenn auf Basis den aktuellen Images ein neues Image gebaut werden soll. Wenn also das Image, das gerade gebaut wird, im Front Statement steht und später jemand auf Basis dieses Images etwas tut, kann mit der ONBUILD-Instruction etwas festgelegt werden, dass ausgeführt wird erst dann, wenn man eben von diesem aktuellen Image mit einem neuen Image quasi erben möchte. Lassen Sie mich an dieser Stelle noch einige Beispiele dazu zeigen. Hier sehen Sie nun das Buildfile einer Oracle-11g-Instanz. Initial beginnt jedes Buildfile mit der FROM-Instruktion und den entsprechenden Referenz zum Basisimage. Hier wird noch der MAINTAINER angegeben, also die Person, die dieses Image wartet. Als nächstes werden einige Dateien, die sich im aktuellen Ordner des Builfiles befinden, in den Container übertragen an den jeweiligen Ort. Dann wird der Repositorymanager von Ubuntu genutzt um bestimmte Bibliotheken nachzuinstallieren. An der Stelle wenn mehrere RUN-Befehle aufeinander folgen empfiehlt es sich diese miteinander zu verschachteln und nicht als einzelne Befehle auszuführen, je nachdem ob man erwartet, dass der Anwendungsfall öfter auftritt oder nicht. Mit Anwendungsfall ist gemeint, dass sich jeweils eine diese Befehle ändern könnte, denn dann könnte das Cashing besser zum Tragen kommen. Nach dem diversen RUN-Statements, die die Maschine nun einrichten werden zum Schluss die Ports 22 für den SSH-Daemon, der Port 1521 für die Oracle-Datenbank und der Port 8080 für das Webinterface der Oracle-Datenbank angegeben. Mit dem CMD-Befehl werden die Instruktionen referenziert, die bei Ausführung der Instanz gestartet werden. In dem Fall werden drei Befehle nacheinander ausgeführt. Um noch ein Beispiel für ein ONBUILD-Skript zu haben, gibt es hier eine Python Standard-BUILD-Installation. Sobald dieses Image her installiert ist, und auf dessen Basis in FROM gearbeitet werden würde, würden diese Befehle nur ausgeführt werden, wenn ein neues Image auf Basis dieses Images erstellt wird. Das bedeutet insgesamt, die Instruktionen hier unten werden also nun bereits in das aktuelle Image gekapselt. Und bei Bau eines neuen Projektes werden in dem Fall alle anderen Python-Dateien entsprechend in dieses resultierende Image hineingeladen. In den letzten Minuten haben Sie nun also die Standardbefehle für das Buildfile kennengelernt. Und Sie können mit Hilfe derer und ein wenig share scripting zukünftig eigene Docker-Images bauen völlig automatisiert.

Virtualisierung mit Docker

Steigen Sie in die Container-Virtualisierung ein und entdecken Sie einfaches Prototyping neuer und unkomplizierte Skalierung bestehender Anwendungen.

3 Std. 36 min (36 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!