Freigeben der App

Nachdem Sie ein Image erstellt haben, besteht Ihr nächster Schritt darin, dieses freizugeben. Zum Freigeben von Docker-Images müssen Sie eine Docker-Registrierung verwenden. Docker Hub ist die Standardregistrierung und der Ort, von dem alle bisher verwendeten Images stammen.

Erstellen eines Repositorys

Zum Pushen eines Images müssen Sie zunächst ein Repository in Docker Hub erstellen.

  1. Rufen Sie Docker Hub auf, und melden Sie sich bei Bedarf an.

  2. Klicken Sie auf Repository erstellen.

  3. Verwenden Sie getting-started als Repositoryname. Stellen Sie sicher, dass für die Sichtbarkeit Public festgelegt ist.

  4. Klicken Sie auf Erstellen.

Rechts auf der Seite finden Sie einen Abschnitt namens Docker-Befehle. Dort finden Sie einen Beispielbefehl, den Sie zum Pushen in dieses Repository ausführen müssen.

Docker-Befehl mit Pushbeispiel

Pushen des Images

  1. Versuchen Sie, den Pushbefehl aus Docker Hub in der Befehlszeile auszuführen. Beachten Sie, dass der Befehl Ihren Namespace und nicht „docker“ nutzt.

    $ docker push docker/getting-started
    The push refers to repository [docker.io/docker/getting-started]
    An image does not exist locally with the tag: docker/getting-started
    

    Wieso schlägt der Befehl fehl? Der Pushbefehl hat nach einem Image namens „docker/getting-started“ gesucht, aber es wurde nicht gefunden. Wenn Sie docker image ls ausführen, werden Sie es ebenfalls nicht finden.

    Sie müssen Ihr zuvor erstelltes, vorhandenes Image mit einem „Tag“ versehen, um dem Image einen anderen Namen zu geben und dies zu beheben.

  2. Melden Sie sich mit dem Befehl docker login -u <username> bei Docker Hub an.

  3. Verwenden Sie den Befehl docker tag, um dem Image getting-started einen neuen Namen zu geben. Stellen Sie sicher, dass Sie <username> durch Ihre Docker-ID austauschen.

    docker tag getting-started <username>/getting-started
    
  4. Versuchen Sie nun nochmal, den Pushbefehl auszuführen. Wenn Sie den Wert aus Docker Hub kopieren, können Sie den Abschnitt tagname löschen, da Sie kein Tag zum Namen des Images hinzugefügt haben. Wenn Sie kein Tag angeben, verwendet Docker das Tag latest.

    docker push <username>/getting-started
    

    Statt die Befehlszeile zu verwenden, können Sie auch mit der rechten Maustaste in der Docker-Ansicht im Abschnitt Images auf das Imagetag klicken und dann Pushen, Verbindung mit Registrierung herstellen und Docker Hub auswählen.

Ausführen des Images auf einer neuen Instanz

Da Sie Ihr Image nun erstellt und in eine Registrierung gepusht haben, versuchen Sie als Nächstes, die App in einer neuen Instanz auszuführen, die dieses Containerimage noch nicht kennt. Hierzu verwenden Sie Play with Docker.

  1. Öffnen Sie Play with Docker in Ihrem Browser.

  2. Melden Sie sich mit Ihrem Docker Hub-Konto an.

  3. Klicken Sie nach der Anmeldung auf den Link „+ ADD NEW INSTANCE“ (Neue Instanz hinzufügen) in der linken Seitenleiste. (Wenn die Leiste nicht angezeigt wird, sollten Sie das Browserfenster vergrößern.) Nach einigen Sekunden wird ein Terminalfenster in Ihrem Browser geöffnet.

    Hinzufügen einer neuen Instanz in Play with Docker

  4. Starten Sie im Terminal die App, die Sie zuvor gepusht haben.

    docker run -dp 3000:3000 <username>/getting-started
    

    Sie sollten sehen, dass das Image gepullt und schließlich gestartet wird.

  5. Klicken Sie auf den 3000-Badge, wenn er angezeigt wird. Daraufhin sollte Ihre App mit Ihren Änderungen angezeigt werden. Gut gemacht. Wenn der 3000-Badge nicht angezeigt wird, können Sie auf Open Port (Port öffnen) klicken und „3000“ eingeben.

Zusammenfassung

In diesem Abschnitt haben Sie erfahren, wie Sie Images freigeben, indem Sie sie an eine Registrierung pushen. Anschließend haben Sie eine neue Instanz geöffnet und das gepushte Image darin ausgeführt. Dieser Vorgang ist in CI-Pipelines recht gängig, bei denen die Pipeline das Image erstellt und an eine Registrierung pusht. Anschließend kann die Produktionsumgebung die neueste Version des Images verwenden.

Erinnern Sie sich an das Ende des letzten Abschnitts, bei dem Sie die App neu gestartet und alle Elemente Ihrer Aufgabenliste verloren haben? Das ist natürlich keine benutzerfreundliche Funktionsweise, daher lernen Sie als Nächstes, wie Sie Daten zwischen Neustarts beibehalten.

Nächste Schritte

Setzen Sie das Tutorial fort.