So installieren und verwenden Sie Docker unter Ubuntu 18.04

Eine frühere Version dieses Tutorials wurde vonfinid geschrieben.

Einführung

Docker ist eine Anwendung, die das Verwalten von Anwendungsprozessen incontainers vereinfacht. Mit Containern können Sie Ihre Anwendungen in ressourcenisolierten Prozessen ausführen. Sie ähneln virtuellen Maschinen, sind jedoch portabler, ressourcenschonender und stärker vom Host-Betriebssystem abhängig.

Eine detaillierte Einführung in die verschiedenen Komponenten eines Docker-Containers finden Sie unterThe Docker Ecosystem: An Introduction to Common Components.

In diesem Tutorial installieren und verwenden Sie Docker Community Edition (CE) unter Ubuntu 18.04. Sie installieren Docker selbst, arbeiten mit Containern und Images und übertragen ein Image in ein Docker-Repository.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie Folgendes:

  • Ein Ubuntu 18.04-Server, der von folgendenthe Ubuntu 18.04 initial server setup guide eingerichtet wurde, einschließlich eines Sudo-Nicht-Root-Benutzers und einer Firewall.

  • Ein Konto fürDocker Hub, wenn Sie Ihre eigenen Bilder erstellen und an Docker Hub senden möchten, wie in den Schritten 7 und 8 gezeigt.

[[Schritt-1 - Installieren des Dockers]] == Schritt 1 - Installieren von Docker

Das Docker-Installationspaket, das im offiziellen Ubuntu-Repository verfügbar ist, ist möglicherweise nicht die neueste Version. Um sicherzustellen, dass wir die neueste Version erhalten, installieren wir Docker vom offiziellen Docker-Repository. Dazu fügen wir eine neue Paketquelle hinzu, fügen den GPG-Schlüssel von Docker hinzu, um sicherzustellen, dass die Downloads gültig sind, und installieren dann das Paket.

Aktualisieren Sie zunächst Ihre vorhandene Paketliste:

sudo apt update

Installieren Sie als Nächstes einige vorausgesetzte Pakete, mit denenapt Pakete über HTTPS verwenden können:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

Fügen Sie dann den GPG-Schlüssel für das offizielle Docker-Repository zu Ihrem System hinzu:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Fügen Sie das Docker-Repository zu APT-Quellen hinzu:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

Aktualisieren Sie als Nächstes die Paketdatenbank mit den Docker-Paketen aus dem neu hinzugefügten Repository:

sudo apt update

Stellen Sie sicher, dass Sie von Docker Repo anstelle des Standard-Ubuntu-Repos installieren:

apt-cache policy docker-ce

Die Ausgabe sieht folgendermaßen aus, obwohl die Versionsnummer für Docker möglicherweise anders ist:

Ausgabe von apt-cache policy docker-ce

docker-ce:
  Installed: (none)
  Candidate: 18.03.1~ce~3-0~ubuntu
  Version table:
     18.03.1~ce~3-0~ubuntu 500
        500 https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages

Beachten Sie, dassdocker-ce nicht installiert ist, der Kandidat für die Installation jedoch aus dem Docker-Repository für Ubuntu 18.04 (bionic) stammt.

Zum Schluss installieren Sie Docker:

sudo apt install docker-ce

Docker sollte jetzt installiert, der Daemon gestartet und der Prozess für den Start beim Booten aktiviert sein. Überprüfen Sie, ob es ausgeführt wird:

sudo systemctl status docker

Die Ausgabe sollte der folgenden ähneln und anzeigen, dass der Dienst aktiv ist und ausgeführt wird:

Output● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2018-07-05 15:08:39 UTC; 2min 55s ago
     Docs: https://docs.docker.com
 Main PID: 10096 (dockerd)
    Tasks: 16
   CGroup: /system.slice/docker.service
           ├─10096 /usr/bin/dockerd -H fd://
           └─10113 docker-containerd --config /var/run/docker/containerd/containerd.toml

Wenn Sie Docker jetzt installieren, erhalten Sie nicht nur den Docker-Dienst (Daemon), sondern auch das Befehlszeilenprogrammdockeroder den Docker-Client. Wir werden später in diesem Tutorial untersuchen, wie Sie den Befehldockerverwenden.

[[Schritt 2 - Ausführen des Docker-Befehls ohne Sudo-optional]] == Schritt 2 - Ausführen des Docker-Befehls ohne Sudo (optional)

Standardmäßig kann der Befehldocker nur vom Benutzerrootoder von einem Benutzer in der Gruppedockerausgeführt werden, die während des Installationsprozesses von Docker automatisch erstellt wird. Wenn Sie versuchen, den Befehldocker auszuführen, ohnesudo voranzustellen oder ohne zur Gruppedocker zu gehören, erhalten Sie eine Ausgabe wie folgt:

Outputdocker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.

Wenn Sie vermeiden möchten,sudo einzugeben, wenn Sie den Befehldocker ausführen, fügen Sie Ihren Benutzernamen zur Gruppedocker hinzu:

sudo usermod -aG docker ${USER}

Melden Sie sich vom Server ab und wieder an, oder geben Sie Folgendes ein, um die neue Gruppenmitgliedschaft zu übernehmen:

su - ${USER}

Sie werden aufgefordert, das Kennwort Ihres Benutzers einzugeben, um fortzufahren.

Bestätigen Sie, dass Ihr Benutzer jetzt zur Gruppedockerhinzugefügt wurde, indem Sie Folgendes eingeben:

id -nG
Outputsammy sudo docker

Wenn Sie der Gruppedocker, unter der Sie nicht angemeldet sind, einen Benutzer hinzufügen müssen, deklarieren Sie diesen Benutzernamen explizit mit:

sudo usermod -aG docker username

Im Rest dieses Artikels wird davon ausgegangen, dass Sie den Befehldocker als Benutzer in der Gruppedockerausführen. Wenn Sie dies nicht möchten, stellen Sie den Befehlen bittesudo voran.

Lassen Sie uns als nächstes den Befehldockeruntersuchen.

[[Schritt-3 -—- Verwenden des Docker-Befehls]] == Schritt 3 - Verwenden des Docker-Befehls

Die Verwendung vondocker besteht darin, eine Kette von Optionen und Befehlen gefolgt von Argumenten zu übergeben. Die Syntax hat folgende Form:

docker [option] [command] [arguments]

Geben Sie Folgendes ein, um alle verfügbaren Unterbefehle anzuzeigen:

docker

Ab Docker 18 enthält die vollständige Liste der verfügbaren Unterbefehle:

Output
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Geben Sie Folgendes ein, um die für einen bestimmten Befehl verfügbaren Optionen anzuzeigen:

docker docker-subcommand --help

Verwenden Sie zum Anzeigen systemweiter Informationen zu Docker Folgendes:

docker info

Sehen wir uns einige dieser Befehle an. Wir beginnen mit der Arbeit mit Bildern.

[[Schritt 4 - Arbeiten mit Docker-Bildern]] == Schritt 4 - Arbeiten mit Docker-Bildern

Docker-Container werden aus Docker-Images erstellt. Standardmäßig bezieht Docker diese Bilder ausDocker Hub, einer Docker-Registrierung, die von Docker, dem Unternehmen hinter dem Docker-Projekt, verwaltet wird. Alle Benutzer können ihre Docker-Images in Docker Hub hosten. In den meisten Anwendungen und Linux-Distributionen, die Sie benötigen, werden also Images dort gehostet.

Geben Sie Folgendes ein, um zu überprüfen, ob Sie über Docker Hub auf Bilder zugreifen und diese herunterladen können:

docker run hello-world

Die Ausgabe zeigt an, dass Docker ordnungsgemäß funktioniert:

OutputUnable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9bb5a5d4561a: Pull complete
Digest: sha256:3e1764d0f546ceac4565547df2ac4907fe46f007ea229fd7ef2718514bcec35d
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

Docker konnte das Image vonhello-worldanfangs nicht lokal finden, daher wurde das Image von Docker Hub heruntergeladen, dem Standard-Repository. Sobald das Bild heruntergeladen wurde, erstellte Docker einen Container aus dem Bild und die Anwendung innerhalb des Containers wurde ausgeführt, wobei die Meldung angezeigt wurde.

Sie können nach Bildern suchen, die in Docker Hub verfügbar sind, indem Sie den Befehldocker mit dem Unterbefehlsearch verwenden. Um beispielsweise nach dem Ubuntu-Image zu suchen, geben Sie Folgendes ein:

docker search ubuntu

Das Skript durchsucht Docker Hub und gibt eine Liste aller Bilder zurück, deren Name mit der Suchzeichenfolge übereinstimmt. In diesem Fall sieht die Ausgabe ungefähr so ​​aus:

OutputNAME                                                      DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
ubuntu                                                    Ubuntu is a Debian-based Linux operating sys…   7917                [OK]
dorowu/ubuntu-desktop-lxde-vnc                            Ubuntu with openssh-server and NoVNC            193                                     [OK]
rastasheep/ubuntu-sshd                                    Dockerized SSH service, built on top of offi…   156                                     [OK]
ansible/ubuntu14.04-ansible                               Ubuntu 14.04 LTS with ansible                   93                                      [OK]
ubuntu-upstart                                            Upstart is an event-based replacement for th…   87                  [OK]
neurodebian                                               NeuroDebian provides neuroscience research s…   50                  [OK]
ubuntu-debootstrap                                        debootstrap --variant=minbase --components=m…   38                  [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5      ubuntu-16-nginx-php-phpmyadmin-mysql-5          36                                      [OK]
nuagebec/ubuntu                                           Simple always updated Ubuntu docker images w…   23                                      [OK]
tutum/ubuntu                                              Simple Ubuntu docker images with SSH access     18
i386/ubuntu                                               Ubuntu is a Debian-based Linux operating sys…   13
ppc64le/ubuntu                                            Ubuntu is a Debian-based Linux operating sys…   12
1and1internet/ubuntu-16-apache-php-7.0                    ubuntu-16-apache-php-7.0                        10                                      [OK]
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mariadb-10   ubuntu-16-nginx-php-phpmyadmin-mariadb-10       6                                       [OK]
eclipse/ubuntu_jdk8                                       Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, …   6                                       [OK]
codenvy/ubuntu_jdk8                                       Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, …   4                                       [OK]
darksheer/ubuntu                                          Base Ubuntu Image -- Updated hourly             4                                       [OK]
1and1internet/ubuntu-16-apache                            ubuntu-16-apache                                3                                       [OK]
1and1internet/ubuntu-16-nginx-php-5.6-wordpress-4         ubuntu-16-nginx-php-5.6-wordpress-4             3                                       [OK]
1and1internet/ubuntu-16-sshd                              ubuntu-16-sshd                                  1                                       [OK]
pivotaldata/ubuntu                                        A quick freshening-up of the base Ubuntu doc…   1
1and1internet/ubuntu-16-healthcheck                       ubuntu-16-healthcheck                           0                                       [OK]
pivotaldata/ubuntu-gpdb-dev                               Ubuntu images for GPDB development              0
smartentry/ubuntu                                         ubuntu with smartentry                          0                                       [OK]
ossobv/ubuntu
...

In der SpalteOFFICIAL gibtOK ein Image an, das von der Firma hinter dem Projekt erstellt und unterstützt wird. Sobald Sie das Bild identifiziert haben, das Sie verwenden möchten, können Sie es mit dem Unterbefehlpullauf Ihren Computer herunterladen.

Führen Sie den folgenden Befehl aus, um das offizielle Image vonubuntuauf Ihren Computer herunterzuladen:

docker pull ubuntu

Sie sehen die folgende Ausgabe:

OutputUsing default tag: latest
latest: Pulling from library/ubuntu
6b98dfc16071: Pull complete
4001a1209541: Pull complete
6319fc68c576: Pull complete
b24603670dc3: Pull complete
97f170c87c6f: Pull complete
Digest: sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d
Status: Downloaded newer image for ubuntu:latest

Nachdem ein Bild heruntergeladen wurde, können Sie einen Container mit dem heruntergeladenen Bild mit dem Unterbefehlrunausführen. Wie Sie im Beispielhello-world gesehen haben, lädt der Docker-Client zuerst das Image herunter und führt dann einen Container mit aus, wenn ein Image nicht heruntergeladen wurde, wenndocker mit dem Unterbefehlrun ausgeführt wird es.

Geben Sie Folgendes ein, um die auf Ihren Computer heruntergeladenen Bilder anzuzeigen:

docker images

Die Ausgabe sollte ungefähr so ​​aussehen:

OutputREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              113a43faa138        4 weeks ago         81.2MB
hello-world         latest              e38bc07ac18e        2 months ago        1.85kB

Wie Sie später in diesem Lernprogramm sehen werden, können Bilder, die Sie zum Ausführen von Containern verwenden, geändert und zum Generieren neuer Bilder verwendet werden. Diese können dann in Docker Hub oder andere Docker-Register hochgeladen werden (pushed ist der Fachbegriff) .

Schauen wir uns genauer an, wie Container ausgeführt werden.

[[Schritt 5 - Ausführen eines Docker-Containers]] == Schritt 5 - Ausführen eines Docker-Containers

Derhello-world-Container, den Sie im vorherigen Schritt ausgeführt haben, ist ein Beispiel für einen Container, der nach dem Ausgeben einer Testnachricht ausgeführt und beendet wird. Container können viel nützlicher und interaktiver sein. Schließlich ähneln sie virtuellen Maschinen und sind nur ressourcenschonender.

Lassen Sie uns als Beispiel einen Container mit dem neuesten Ubuntu-Image ausführen. Durch die Kombination der Schalter-i und-t erhalten Sie interaktiven Shell-Zugriff auf den Container:

docker run -it ubuntu

Ihre Eingabeaufforderung sollte sich ändern, um der Tatsache Rechnung zu tragen, dass Sie jetzt im Container arbeiten, und sollte die folgende Form annehmen:

Outputroot@d9b100f2f636:/#

Notieren Sie die Container-ID in der Eingabeaufforderung. In diesem Beispiel ist esd9b100f2f636. Sie benötigen diese Container-ID später, um den Container zu identifizieren, wenn Sie ihn entfernen möchten.

Jetzt können Sie einen beliebigen Befehl im Container ausführen. Beispiel: Aktualisieren Sie die Paketdatenbank im Container. Sie müssen keinem Befehlsudo voranstellen, da Sie im Container als Benutzer vonrootarbeiten:

apt update

Installieren Sie dann eine beliebige Anwendung darin. Installieren wir Node.js:

apt install nodejs

Dadurch wird Node.js im Container aus dem offiziellen Ubuntu-Repository installiert. Stellen Sie nach Abschluss der Installation sicher, dass Node.js installiert ist:

node -v

Die Versionsnummer wird in Ihrem Terminal angezeigt:

Outputv8.10.0

Alle Änderungen, die Sie im Container vornehmen, gelten nur für diesen Container.

Geben Sie zum Verlassen des Containers an der Eingabeaufforderungexit ein.

Schauen wir uns als nächstes die Verwaltung der Container auf unserem System an.

[[Schritt-6 - Verwalten von Docker-Containern]] == Schritt 6 - Verwalten von Docker-Containern

Nach einer Weile der Verwendung von Docker befinden sich viele aktive (aktive) und inaktive Container auf Ihrem Computer. Verwenden Sie zum Anzeigen deractive ones:

docker ps

Sie sehen eine Ausgabe ähnlich der folgenden:

OutputCONTAINER ID        IMAGE               COMMAND             CREATED

In diesem Tutorial haben Sie zwei Container gestartet. eine aus dem Bild vonhello-worldund eine andere aus dem Bild vonubuntu. Beide Container werden nicht mehr ausgeführt, sind jedoch weiterhin auf Ihrem System vorhanden.

Um alle Container anzuzeigen - aktiv und inaktiv, führen Siedocker ps mit dem Schalter-a aus:

docker ps -a

Es wird eine Ausgabe ähnlich der folgenden angezeigt:

d9b100f2f636        ubuntu              "/bin/bash"         About an hour ago   Exited (0) 8 minutes ago                           sharp_volhard
01c950718166        hello-world         "/hello"            About an hour ago   Exited (0) About an hour ago                       festive_williams

Um den zuletzt erstellten Container anzuzeigen, übergeben Sie ihm den Schalter-l:

docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
d9b100f2f636        ubuntu              "/bin/bash"         About an hour ago   Exited (0) 10 minutes ago                       sharp_volhard

Verwenden Sie zum Starten eines gestoppten Containersdocker start, gefolgt von der Container-ID oder dem Namen des Containers. Starten wir den Ubuntu-basierten Container mit der IDd9b100f2f636:

docker start d9b100f2f636

Der Container wird gestartet und Sie könnendocker ps verwenden, um seinen Status anzuzeigen:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
d9b100f2f636        ubuntu              "/bin/bash"         About an hour ago   Up 8 seconds                            sharp_volhard

Verwenden Siedocker stop, gefolgt von der Container-ID oder dem Namen, um einen laufenden Container zu stoppen. Dieses Mal verwenden wir den Namen, den Docker dem Container zugewiesen hat:sharp_volhard:

docker stop sharp_volhard

Wenn Sie entschieden haben, dass Sie keinen Container mehr benötigen, entfernen Sie ihn mit dem Befehldocker rm und verwenden Sie erneut entweder die Container-ID oder den Namen. Verwenden Sie den Befehldocker ps -a, um die Container-ID oder den Namen für den Container zu ermitteln, der dem Image vonhello-worldzugeordnet ist, und entfernen Sie ihn.

docker rm festive_williams

Sie können einen neuen Container starten und ihm mit dem Schalter--nameeinen Namen geben. Sie können auch den Schalter--rm verwenden, um einen Container zu erstellen, der sich selbst entfernt, wenn er gestoppt wird. Weitere Informationen zu diesen und anderen Optionen finden Sie im Befehldocker run help.

Container können in Bilder umgewandelt werden, mit denen Sie neue Container erstellen können. Schauen wir uns an, wie das funktioniert.

[[Schritt-7 - Übernehmen von Änderungen in einem Container in ein Docker-Image] == Schritt 7 - Übernehmen von Änderungen in einem Container in ein Docker-Image

Wenn Sie ein Docker-Image starten, können Sie wie bei einer virtuellen Maschine Dateien erstellen, ändern und löschen. Die von Ihnen vorgenommenen Änderungen gelten nur für diesen Container. Sie können es starten und stoppen, aber sobald Sie es mit dem Befehldocker rm zerstören, gehen die Änderungen endgültig verloren.

In diesem Abschnitt erfahren Sie, wie Sie den Status eines Containers als neues Docker-Image speichern.

Nach der Installation von Node.js im Ubuntu-Container wird jetzt ein Container von einem Image ausgeführt, der sich jedoch von dem Image unterscheidet, das Sie zum Erstellen verwendet haben. Möglicherweise möchten Sie diesen Container "Node.js" später als Grundlage für neue Bilder verwenden.

Übernehmen Sie dann die Änderungen mit dem folgenden Befehl in eine neue Docker-Image-Instanz.

docker commit -m "What you did to the image" -a "Author Name" container_id repository/new_image_name

Der Schalter-m steht für die Festschreibungsnachricht, mit der Sie und andere wissen, welche Änderungen Sie vorgenommen haben, während-a zur Angabe des Autors verwendet wird. Dascontainer_id ist dasjenige, das Sie zuvor im Lernprogramm notiert haben, als Sie die interaktive Docker-Sitzung gestartet haben. Sofern Sie in Docker Hub keine zusätzlichen Repositorys erstellt haben, istrepository normalerweise Ihr Docker Hub-Benutzername.

Für den Benutzersammy mit der Container-IDd9b100f2f636 lautet der Befehl beispielsweise:

docker commit -m "added Node.js" -a "sammy" d9b100f2f636 sammy/ubuntu-nodejs

Wenn Siecommitein Bild sind, wird das neue Bild lokal auf Ihrem Computer gespeichert. Später in diesem Lernprogramm erfahren Sie, wie Sie ein Image in eine Docker-Registrierung wie Docker Hub übertragen, damit andere Benutzer darauf zugreifen können.

Wenn Sie die Docker-Bilder erneut auflisten, wird sowohl das neue als auch das alte Bild angezeigt, von dem es abgeleitet wurde:

docker images

Die Ausgabe sieht folgendermaßen aus:

OutputREPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
sammy/ubuntu-nodejs   latest              7c1f35226ca6        7 seconds ago       179MB
ubuntu                   latest              113a43faa138        4 weeks ago         81.2MB
hello-world              latest              e38bc07ac18e        2 months ago        1.85kB

In diesem Beispiel istubuntu-nodejs das neue Image, das aus dem vorhandenenubuntu-Image von Docker Hub abgeleitet wurde. Der Größenunterschied spiegelt die vorgenommenen Änderungen wider. In diesem Beispiel wurde NodeJS installiert. Wenn Sie also das nächste Mal einen Container mit Ubuntu ausführen müssen, auf dem NodeJS vorinstalliert ist, können Sie einfach das neue Image verwenden.

Sie können Images auch ausDockerfile erstellen, wodurch Sie die Installation von Software in einem neuen Image automatisieren können. Dies liegt jedoch außerhalb des Rahmens dieses Lernprogramms.

Lassen Sie uns nun das neue Image für andere freigeben, damit sie daraus Container erstellen können.

[[Schritt 8 - - Docker-Images in ein Docker-Repository verschieben]] == Schritt 8 - Docker-Images in ein Docker-Repository verschieben

Der nächste logische Schritt nach dem Erstellen eines neuen Images aus einem vorhandenen Image besteht darin, es für einige Ihrer Freunde, die ganze Welt in Docker Hub oder eine andere Docker-Registrierung, auf die Sie Zugriff haben, freizugeben. Um ein Image an Docker Hub oder eine andere Docker-Registrierung zu senden, müssen Sie dort über ein Konto verfügen.

In diesem Abschnitt erfahren Sie, wie Sie ein Docker-Image in Docker Hub übertragen. InHow To Set Up a Private Docker Registry on Ubuntu 14.04 erfahren Sie, wie Sie Ihre eigene private Docker-Registrierung erstellen.

Melden Sie sich zuerst bei Docker Hub an, um Ihr Image zu pushen.

docker login -u docker-registry-username

Sie werden aufgefordert, sich mit Ihrem Docker Hub-Passwort zu authentifizieren. Wenn Sie das richtige Kennwort angegeben haben, sollte die Authentifizierung erfolgreich sein.

[.Hinweis]##

Note: Wenn sich Ihr Docker-Registrierungsbenutzername von dem lokalen Benutzernamen unterscheidet, den Sie zum Erstellen des Bildes verwendet haben, müssen Sie Ihr Bild mit Ihrem Registrierungsbenutzernamen versehen. Für das Beispiel im letzten Schritt würden Sie Folgendes eingeben:

docker tag sammy/ubuntu-nodejs docker-registry-username/ubuntu-nodejs

Dann können Sie Ihr eigenes Bild mit dem folgenden Befehl verschieben:

docker push docker-registry-username/docker-image-name

Um das Image vonubuntu-nodejsin das Repository vonsammyzu verschieben, lautet der Befehl:

docker push sammy/ubuntu-nodejs

Der Vorgang kann einige Zeit in Anspruch nehmen, da die Bilder hochgeladen werden. Nach Abschluss sieht die Ausgabe jedoch folgendermaßen aus:

OutputThe push refers to a repository [docker.io/sammy/ubuntu-nodejs]
e3fbbfb44187: Pushed
5f70bf18a086: Pushed
a3b5c80a4eba: Pushed
7f18b442972b: Pushed
3ce512daaf78: Pushed
7aae4540b42d: Pushed

...

Nachdem Sie ein Bild in eine Registrierung verschoben haben, sollte es im Dashboard Ihres Kontos aufgeführt sein (siehe Abbildung unten).

New Docker image listing on Docker Hub

Wenn ein Push-Versuch zu einem Fehler dieser Art führt, haben Sie sich wahrscheinlich nicht angemeldet:

OutputThe push refers to a repository [docker.io/sammy/ubuntu-nodejs]
e3fbbfb44187: Preparing
5f70bf18a086: Preparing
a3b5c80a4eba: Preparing
7f18b442972b: Preparing
3ce512daaf78: Preparing
7aae4540b42d: Waiting
unauthorized: authentication required

Melden Sie sich mitdocker login an und wiederholen Sie den Push-Versuch. Stellen Sie dann sicher, dass es auf Ihrer Docker Hub-Repository-Seite vorhanden ist.

Sie können jetztdocker pull sammy/ubuntu-nodejs verwenden, um das Image auf einen neuen Computer zu ziehen und damit einen neuen Container auszuführen.

Fazit

In diesem Lernprogramm haben Sie Docker installiert, mit Bildern und Containern gearbeitet und ein geändertes Bild an Docker Hub gesendet. Nachdem Sie die Grundlagen kennen, erkunden Sie dieother Docker tutorialsin der DigitalOcean-Community.