Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Virtualisierung mit Docker

Docker-Buildfiles bauen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Das Erstellen eines Docker-Buildfile birgt mitunter eine gewisse Komplexität. Lassen Sie sich in diesem Film das konkrete Vorgehen erläutern, um korrekte Buildfiles zu konstruieren.

Transkript

Wenn auch Container das Hauptfeature von Docker sind, sind die Möglichkeiten des Docker-Buildfiles wesentlich wichtiger in der Praxis. Wenn auch die Nutzungen dieser Möglichkeiten oftmals nicht so einfach sind, und Sie sich sicherlich aus gutem Grund fragen, ob man sich das nicht sparen kann, zeige ich Ihnen nun im Laufe dieses Videos, wie Sie unkompliziert an Ihr Ziel kommen. Der einfachste Weg ein Docker-Buildfile zu konstruieren ist mit Hilfe von Prototyping. Das bedeutet, man versucht initial einfach einen Container auf einem Basisimage zu starten und die jeweilige Anwendung zu installieren. In dem Moment begegnet man sowohl den Abhängigkeiten dieser Anwendung als auch den zugehörigen Konfigurationsparametern. Da genau dieser Vorgang oft mit trial and error einhergeht, kann man, insofern die Anwendung irgendwann funktioniert, mit Hilfe eines klassischen GNU-Befehls der History feststellen, welche Befehle tatsächlich notwendig waren, um die Anwendung zu installieren. Ein Problem, dem man im Regelfall auch oft begegnet, sind Anwendungen, deren Installationsdatei nicht mit einer initialen Vorkonfiguration arbeiten kann, sondern lediglich durch den Input des Users im Laufe des Installationsprozesses gesteuert wird. Dieser Art von Anwendungen bezeichnet man auch als Interaktive Konsolenawendungen. Auch hierfür gibt es ein intelligentes Konstrukt, mit dessen Hilfe man dieser Art von Anwendungen automatisch bedienen kann. Die so genannten Expect Skripte. Expect Skripte beinhalten Informationen darüber, welche Input-Informationen an einer Anwendung zu welchem Zeitpunkt zu geben sind. Und die Erstellung solcher Expect Skripte kann man auch völlig automatisieren mit Hilfe der Autoexpect-Anwendung. Lassen Sie uns das Ganze noch einmal beispielhaft nachvollziehen. Ich beginne nun einen neuen Container auf Basis der Ubuntu-Version trusty mit eine Bash-Kommandozeile. Ich navigiere nun in den Ordner des Root-Users und lege dort eine Datei an, die beispielsweise repräsentiert, wie einen Konsolenanwendung interaktiven Input annehmen kann. Man sieht an der Stelle, dass man aufgefordert wird das Alter einzugeben und das Alter in die Variable year angelesen wird und dann wieder ausgegeben. Ich speichere das Ganze und setze Ausfuhrechte auf diese Skript. Wenn ich das nun ausführe, funktioniert der Skript, wie erwartet. Was man an der Stelle schon sehr gut sehen kann, bis jetzt wurden insgesamt vier Befehle verwendet und diese Befehle werden nun im Nachhinein alle nachvollziehbar mit Hilfe der Histoy-Anwendung. Sollte ich mich für die Teilbefehle interessieren, die ich verwendet habe um diese Skript zu erstellen, könnte ich diese nun aus der History lesen. Um nun mit der Aufzeichner Autoexpect zu arbeiten muss ich mir das Expect- Entwicklungspaket installieren. Dafür ist es zunächst einmal notwendig, die Paket-Ressourcen von Ubuntu upzudaten. Dies geht mit apt-get update. Als nächstes installiere ich also nun das Paket expect-dev, also development, bestätige mit Enter. An der Stelle gibt es relativ viele Abhängigkeiten und der Download kann unter Umständen einige Zeit dauern. Ich bestätige mit Ja und warte nun darauf, dass der Installation abgeschlossen wird. Nach der Fertigstellung der Installation befindet sich nun der Autoexpect- Befehl auf der Kommandozeile. Diesen nutze ich im Zusammenhang mit der jeweils auszuführenden Anwendung, in dem Fall der Skript und starte ihn nun. Ich führe nun das Skript wie gehabt aus, gebe beispielsweise die 12 ein, und sehe nun, dass in die Datei script.exp das Autoexpect-Skript geschrieben wurde. An der Stelle sieht man nun, dass Autoexpect automatisch aufnimmt, welche Eingabe erwartet wird und welche Ausgabe an diese Eingabe geschickt wird. Sollte man an dieser Stelle noch besondere Bedürfnisse haben, wie beispielsweise zeitliche Timeouts oder einen sich verändernden Aufruf, der letztendlich die Parameter entgegennimmt, kann man das je nach Bedarf hier völlig anpassen. Zusätzlich kann man auch die Eingaben, wie beispielsweise die 12 anhand einer Umgebungsvariable parametrisieren und wiederum so viel einfacher in das Docker-Konzept integrieren. Wenn ich nun die Anwendung verlasse und diese Skript ausführe, sieht man an der Stelle, dass es automatisch die Anwendung-Skript bedient, den Input 12 gibt und dann entsprechend die Antwort entsteht. Wenn Sie sich nun an Ihre ersten Docker-Buildfiles machen, möchte ich Ihnen noch einige Tipps mit auf den Weg geben. Sollten Sie Abhängigkeiten mit einem Paketmanager installieren, wie apt-get oder yum, immer darauf achten, dass der Parameter -y gesetzt ist, denn dieser bestätigt automatisch die Installation. Denn im Falle eine automatischen Docker-Provisionierung ist man nicht in der Lage diesen Input, der nun vom Nutzer abgefragt wird, händisch einzugeben. Sollten Sie mehrere RUN-Befehle am Stück verwenden, so macht es durchau Sinn, diese zu schachteln in einem einzigen RUN-Befehl. Denn aus Gründen der Effizienz macht es keinen Sinn, jeden RUN-Befehl einzeln zu stellen, denn Docker muss für jeden diesen RUN-Befehle einen eigenen Container erzeugen und wieder abbauen. Sollten sie sich verändernden Parameter für Ihre Buildfile haben, nutzen Sie nach Möglichkeit Umgebungsvariablen. Diese sind sowohl auf Image-Ebenen mit Hilfe der Docker-Files anpassbar als auch nachträglich, wenn der Nutzer den Container ausführt. Und zu guter Letzt wichtig zu beachten ist, dass das User-System in eine Docker-Container durchaus wichtig ist. Denn auf einem regulären Server würden Sie auch nicht jedem User und jeder Anwendung den Root-Benutzer geben. Nur weil es sich um einen Container handelt, heißt es nicht, dass prinzipiell Sachen wie Nutzer-System und Berechtigungen keine Rolle spielen. Sie wissen nun also, wie Sie mit einfachen Prototyping live in einem Container mit Hilfe des History-Befehls und der Autoexpect-Anwendung Buildfiles zukünftig konstruieren können.

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!