GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

Docker Teil 4:Erstellen und Veröffentlichen benutzerdefinierter Docker-Images

Im ersten und zweiten Teil haben wir die Grundlagen zum Ausführen eines Containers behandelt, indem wir unser System für die Verwaltung von Docker-Containern vorbereitet haben, und was es aus technischer Sicht genau bedeutet, einen Docker-Container gegen andere Virtualisierungstechnologien einzusetzen. Dann, im dritten Teil, haben wir uns mit Docker-Bildern beschäftigt, die Grundlagen gelernt und unseren ersten Notepad-Container mit WordPress oder DokuWiki erstellt.

In diesem vierten Teil werden wir sehen, wie Docker-Images erstellt werden, und wir werden unser eigenes benutzerdefiniertes Image erstellen, das heruntergeladen und mit unseren Freunden, Kollegen und Communities geteilt werden kann.

Für dieses Tutorial verwenden wir das Whale Docker-Image. Der Whale ist das offizielle Maskottchen von Docker und das Whale-Docker-Bild ähnelt dem Cowsay-Programm, das ASCII-Bilder einer Kuh im Terminal mit einer Nachricht generiert. Es kann auch Bilder mit vorgefertigten Bildern anderer Tiere erzeugen, wie z. B. Tux, dem Pinguin, dem Linux-Maskottchen.

Einführung in Docker-Dateien

Im vorherigen Teil haben wir uns Docker Hub vorgestellt und erfahren, dass es sich um eine Cloud-basierte zentralisierte Ressource für die Container-Image-Erkennung, Image-Erstellung und Verteilung dieser Images handelt. Wir haben auch gelernt, dass ein Docker-Image ein mehrschichtiges Image auf einem Basis-Image ist. Durch die Verwendung eines Basis-Images entfällt jedoch die Mühe, ein geeignetes Betriebssystem für Docker-Images von Grund auf neu zu erstellen, und gibt uns die Möglichkeit, die oberen Schichten anzupassen, auf denen sich unsere Software befinden wird.

Um ein benutzerdefiniertes Image mithilfe eines Basisimages zu erstellen, müssen wir der Docker-Engine Anweisungen zum Installieren und Konfigurieren von Paketen und Dateien sowie einige zugehörige Einstellungen bereitstellen. Diese Anweisungen werden in eine einfache Textdatei namens „dockerfile“ geschrieben. Dockerfiles sind wie Rezepte, die Sie einem Koch übergeben und er/sie kocht Ihnen ein tolles Essen. Diese Docker-Dateien werden mithilfe einer einfachen, beschreibenden Reihe von Schritten geschrieben, die als „Anweisungen“ bezeichnet werden. Jede Anweisung erstellt eine neue Ebene in unserem Bild. Zu den Anweisungen gehören Aktionen wie das Ausführen eines Befehls, das Hinzufügen einer Datei oder eines Verzeichnisses, der auszuführende Prozess beim Starten eines Containers aus dem Image usw. Dieser Prozess ist genau so, als würden Sie eine Reihe von Befehlen in einem Shell-Skript festlegen. Sobald Sie die Erstellung eines Images anfordern, liest Docker die Docker-Datei, führt die Anweisungen aus und gibt ein endgültiges Image zurück.

Erstellen eines Docker-Images

Es gibt zwei Möglichkeiten, Ihr benutzerdefiniertes Docker-Image zu erstellen. Sie können es entweder auf Ihrem Computer erstellen oder den Docker Hub verwenden, über den wir zuvor gesprochen haben. In diesem Teil lernen wir, wie wir unser Docker-Image lokal erstellen und es dann in der Docker-Hub-Registrierung veröffentlichen.

Lokales Erstellen mit einem Dockerfile

Wir erstellen ein benutzerdefiniertes Docker-Image mit dem „Whale say“-Image, das ein kleines Docker-Image ist (basierend auf einem Ubuntu-Image), das, wenn Sie es ausführen, etwas sagt, das Sie so programmiert haben, dass es Ihnen zurücksagt.

Starten Sie zuerst ein Terminal und erstellen Sie einen neuen Ordner, indem Sie Folgendes eingeben:

mkdir mywhale

Dieses Verzeichnis dient als „Kontext“ für Ihren Build. Der Kontext bedeutet lediglich, dass er alle Dinge enthält, die Sie benötigen, um Ihr Image erfolgreich aufzubauen.

Gehen Sie in Ihren neuen Ordner hinein mit:

cd mywhale

und erstellen Sie eine Dockerfile im Ordner, indem Sie Folgendes eingeben:

touch Dockerfile

Jetzt sollten Sie die leere Docker-Datei sehen, die wir erstellt haben, wenn Sie den Befehl „ll“ eingeben:

ll
$ ll
total 8.0K
-rw-rw-r-- 1 user user 0 23:26 Dockerfile

Öffnen Sie es mit Ihrem bevorzugten Texteditor und fügen Sie hinzu:

FROM docker/whalesay:latest

Diese erste Anweisungszeile mit dem Schlüsselwort FROM teilt Docker mit, auf welchem ​​Image Ihr Image basiert. Sie basieren Ihre neue Arbeit auf dem bestehenden Walsagen-Bild.

Die nächste Anweisung, die wir hinzufügen werden, wird unserem Wal die Fähigkeit geben, eine Wahrsagerei zu machen. Um diese Aufgabe zu erfüllen, verwenden wir das Fortune-Paket, das in den Ubuntu-Repositories verfügbar ist (denken Sie daran, dass das Wal-Image auf einem Ubuntu-Image basiert). Das Fortune-Programm hat einen Befehl, der weise Sprüche ausdruckt, die unser Wal sagen kann.

Der erste Schritt ist also die Installation. Dazu fügen wir die übliche apt install-Anweisung hinzu:

RUN apt -y update && apt -y install fortunes

Sobald das Image über die erforderliche Software verfügt, weisen Sie die Software an, ausgeführt zu werden, wenn das Image geladen wird. Dazu fügen wir die folgende Anweisung hinzu:

CMD /usr/games/fortune -a | cowsay

Die obige Zeile weist das Fortune-Programm an, ein zufällig ausgewähltes Zitat an das Cowsay-Programm zu senden

Und wir sind fertig! Speichern Sie nun die Datei und beenden Sie sie.
Sie können überprüfen, was Sie getan haben, indem Sie "cat Dockerfile" ausführen, sodass Ihre Dockerfile wie folgt aussieht:

cat Dockerfile
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay

Jetzt, da alles (hoffentlich) gut aussieht, ist es an der Zeit, unser Docker-Image zu erstellen (vergessen Sie nicht den Punkt . am und des Befehls).:

docker build -t my-docker-whale .

Der obige Befehl nimmt die Docker-Datei im aktuellen Ordner und erstellt ein Image namens „my-docker-whale“ auf Ihrem lokalen Computer.

Sie können überprüfen, ob Ihr Docker-Image tatsächlich auf Ihrem Computer gespeichert ist mit:

docker images

Dann können Sie Ihr Docker-Image ausführen, indem Sie Folgendes eingeben:

docker run my-docker-whale

Sobald es ausgeführt wird, erhalten Sie so etwas wie das folgende Bild

Veröffentlichen Ihres benutzerdefinierten Docker-Image auf Docker Hub

Ihre nächste Option besteht darin, das erstellte Docker-Image im Docker-Hub-Repository zu veröffentlichen. Dazu müssen Sie ein Konto auf der Docker Hub-Anmeldeseite erstellen, auf der Sie einen Namen, ein Passwort und eine E-Mail-Adresse für Ihr Konto angeben. Ich sollte auch darauf hinweisen, dass der Docker-Hub-Dienst für öffentliche Docker-Images kostenlos ist. Nachdem Sie Ihr Konto erstellt haben, können Sie das zuvor erstellte Bild übertragen, um es anderen zur Verwendung zur Verfügung zu stellen.

Dazu benötigen Sie die ID und den TAG Ihres „my-docker-whale“-Bildes.

Führen Sie erneut den Befehl „docker images“ aus und notieren Sie sich die ID und den TAG Ihres Docker-Images, z. a69f3f5e1a31.

Mit dem folgenden Befehl bereiten wir nun unser Docker-Image für seine Reise in die Außenwelt vor (der Kontoname-Teil des Befehls ist Ihr Kontoname auf der Profilseite von Docker Hube):

docker tag a69f3f5e1a31 accountname/my-docker-whale:latest

Führen Sie den Befehl „docker images“ aus und überprüfen Sie Ihr neu markiertes Image.

Verwenden Sie als Nächstes den Befehl „docker login“, um sich über die Befehlszeile beim Docker Hub anzumelden.

Das Format für den Login-Befehl ist:

docker login --username=yourhubusername [email protected]

Wenn Sie dazu aufgefordert werden, geben Sie Ihr Passwort ein und drücken Sie die Eingabetaste.

Jetzt können Sie Ihr Image in das neu erstellte Repository verschieben:

docker push accountname/my-docker-whale

Der obige Befehl kann abhängig von der Upload-Bandbreite Ihrer Verbindung eine Weile dauern, da etwa 180 MB Daten hochgeladen werden (in unserem Beispiel). Sobald es abgeschlossen ist, können Sie zu Ihrem Profil auf Docker Hub gehen und Ihr neues Image überprüfen.

Herunterladen Ihres benutzerdefinierten Bildes

Wenn Sie Ihr Image aus Ihrem Docker-Hub-Repository ziehen möchten, müssen Sie zuerst das Original-Image von Ihrem lokalen Computer löschen, da Docker sich weigern würde, es vom Hub zu ziehen, da das lokale und das Remote-Image identisch sind.

Wie Sie sich aus dem vorherigen Teil erinnern, müssen Sie zum Entfernen eines Docker-Images den Befehl „docker rmi“ ausführen. Sie können eine ID oder den Namen verwenden, um ein Bild zu entfernen:

docker rmi -f a69f3f5e1a31

Nachdem das Image gelöscht wurde, können Sie das Image mit dem Befehl „docker run“ aus Ihrem Repository abrufen und laden, indem Sie Ihren Kontonamen aus Docker Hub einfügen.

docker run accountname/my-docker-whale

Da wir das Image zuvor gelöscht haben und es auf unserem lokalen System nicht mehr verfügbar war, lädt Docker es herunter und speichert es am angegebenen Ort.

Zusammenfassung

In diesem Teil haben wir gelernt, wie man eine Docker-Datei erstellt, einige grundlegende Anweisungen schreibt und den Build und das Image als Rezept verwendet. Wir haben auch die Grundlagen zum Übertragen unseres neuen benutzerdefinierten Images in die Docker Hub-Registrierung und zum Ziehen auf unseren lokalen Computer behandelt. Im nächsten Teil dieser Reihe von Docker-Tutorials werde ich zeigen, wie wir den Image-Erstellungsvorgang automatisieren können, sodass wir sofort benutzerdefinierte Images erstellen können, wann immer wir sie brauchen! Bleiben Sie dran.


Docker
  1. So verschieben Sie Docker-Images zwischen Hosts

  2. Erstellen, markieren und laden Sie Ihr eigenes Docker-Image hoch

  3. So packen und übertragen Sie Docker-Images von einem Server auf einen anderen

  4. So ändern Sie Docker-Images

  5. Automatisches Erstellen und Konfigurieren benutzerdefinierter Docker-Images mit Dockerfile – Teil 3

Halten Sie Ihre Docker-Images mit Docker Image Prune überschaubar

So verwenden Sie Docker Commit zum Ändern von Container-Images

Vollständige Anleitung zum Entfernen von Docker-Images

So erstellen Sie ein benutzerdefiniertes Docker-Image mit Dockerfile

Teilen von Docker-Images auf Docker Hub

So listen / suchen / ziehen Sie Docker-Images unter Linux