So installieren und verwenden Sie Docker unter CentOS 7

Einführung

Docker ist eine Anwendung, mit der Anwendungsprozesse einfach und problemlos in einem Container ausgeführt werden können, der wie virtuelle Maschinen aussieht, nur portabler, ressourcenschonender und stärker vom Host-Betriebssystem abhängig ist. Eine detaillierte Einführung in die verschiedenen Komponenten eines Docker-Containers finden Sie unterThe Docker Ecosystem: An Introduction to Common Components.

Es gibt zwei Methoden, um Docker unter CentOS 7 zu installieren. Eine Methode besteht darin, es auf einer vorhandenen Installation des Betriebssystems zu installieren. Das andere beinhaltet das Hochfahren eines Servers mit einem Tool namensDocker Machine, das Docker automatisch darauf installiert.

In diesem Lernprogramm erfahren Sie, wie Sie es in einer vorhandenen Installation von CentOS 7 installieren und verwenden.

Voraussetzungen

  • 64-Bit-CentOS 7-Tröpfchen

  • Nicht-Root-Benutzer mit Sudo-Berechtigungen. Ein mitInitial Setup Guide for CentOS 7 eingerichteter CentOS 7-Server erklärt, wie dies eingerichtet wird.

[.note] #Note: Docker erfordert eine 64-Bit-Version von CentOS 7 sowie eine Kernel-Version gleich oder größer als 3.10. Das standardmäßige 64-Bit-CentOS 7-Droplet erfüllt diese Anforderungen.
#

Alle Befehle in diesem Lernprogramm sollten als Benutzer ohne Rootberechtigung ausgeführt werden. Wenn für den Befehl Root-Zugriff erforderlich ist, wirdsudo vorangestellt. Initial Setup Guide for CentOS 7 erklärt, wie Benutzer hinzugefügt und ihnen Sudo-Zugriff gewährt werden.

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

Das Docker-Installationspaket, das im offiziellen CentOS 7-Repository verfügbar ist, ist möglicherweise nicht die neueste Version. Installieren Sie Docker aus dem offiziellen Docker-Repository, um die neueste und beste Version zu erhalten. In diesem Abschnitt erfahren Sie, wie Sie genau das tun.

Aktualisieren Sie zunächst die Paketdatenbank:

sudo yum check-update

Führen Sie nun diesen Befehl aus. Es wird das offizielle Docker-Repository hinzugefügt, die neueste Version von Docker heruntergeladen und installiert:

curl -fsSL https://get.docker.com/ | sh

Starten Sie nach Abschluss der Installation den Docker-Daemon:

sudo systemctl start docker

Stellen Sie sicher, dass 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 Sun 2016-05-01 06:53:52 CDT; 1 weeks 3 days ago
     Docs: https://docs.docker.com
 Main PID: 749 (docker)

Stellen Sie schließlich sicher, dass es bei jedem Neustart des Servers gestartet wird:

sudo systemctl enable docker

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 erfordert das Ausführen des Befehlsdocker Root-Berechtigungen. Das heißt, Sie müssen dem Befehlsudo voranstellen. Es kann auch von einem Benutzer in der Gruppedockerausgeführt werden, die bei der Installation von Docker automatisch erstellt wird. Wenn Sie versuchen, den Befehldocker auszuführen, ohnesudo voranzustellen oder ohne zur Docker-Gruppe 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 Docker-Gruppe hinzu:

sudo usermod -aG docker $(whoami)

Sie müssen sich vom Droplet abmelden und wieder als derselbe Benutzer anmelden, um diese Änderung zu aktivieren.

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 Befehldockerals Benutzer in der Docker-Benutzergruppe ausführen. Wenn Sie dies nicht möchten, stellen Sie den Befehlen bittesudo voran.

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

Wenn Docker installiert ist und funktioniert, ist es jetzt an der Zeit, sich mit dem Befehlszeilendienstprogramm vertraut zu machen. Die Verwendung vondocker besteht darin, eine Kette von Optionen und Unterbefehlen 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 1.11.1 enthält die vollständige Liste der verfügbaren Unterbefehle:

Output
    attach    Attach 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 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 a container or image
    kill      Kill a running container
    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
    network   Manage Docker networks
    pause     Pause all processes within a container
    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 a container
    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
    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 a running container
    tag       Tag an image into a repository
    top       Display the running processes of a container
    unpause   Unpause all processes within a container
    update    Update configuration of one or more containers
    version   Show the Docker version information
    volume    Manage Docker volumes
    wait      Block until a container stops, then print its exit code

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 Folgendes:

docker info

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

Docker-Container werden von Docker-Images ausgeführt. Standardmäßig werden diese Images aus Docker Hub abgerufen, einer Docker-Registrierung, die von Docker verwaltet wird, dem Unternehmen, das hinter dem Docker-Projekt steht. Jeder kann Docker-Images in Docker Hub erstellen und hosten. Daher müssen die meisten Anwendungen und Linux-Distributionen, die Sie zum Ausführen von Docker-Containern benötigen, Images in Docker Hub haben.

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, die Folgendes enthalten sollte, sollte anzeigen, dass Docker ordnungsgemäß funktioniert:

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

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 CentOS-Image zu suchen, geben Sie Folgendes ein:

docker search centos

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
centos                          The official build of CentOS.                   2224      [OK]
jdeathe/centos-ssh              CentOS-6 6.7 x86_64 / CentOS-7 7.2.1511 x8...   22                   [OK]
jdeathe/centos-ssh-apache-php   CentOS-6 6.7 x86_64 / Apache / PHP / PHP M...   17                   [OK]
million12/centos-supervisor     Base CentOS-7 with supervisord launcher, h...   11                   [OK]
nimmis/java-centos              This is docker images of CentOS 7 with dif...   10                   [OK]
torusware/speedus-centos        Always updated official CentOS docker imag...   8                    [OK]
nickistre/centos-lamp           LAMP on centos setup                            3                    [OK]

...

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 Unterbefehlpullwie folgt auf Ihren Computer herunterladen:

docker pull centos

Nachdem ein Bild heruntergeladen wurde, können Sie einen Container mit dem heruntergeladenen Bild mit dem Unterbefehlrunausführen. Wenn ein Image nicht heruntergeladen wurde, währenddocker mit dem Unterbefehlrun ausgeführt wird, lädt der Docker-Client das Image zuerst herunter und führt dann einen Container damit aus:

docker run centos

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

docker images

Die Ausgabe sollte ungefähr so ​​aussehen:

[secondary_lable Output]
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              778a53015523        5 weeks ago         196.7 MB
hello-world         latest              94df4f0ce8a4        2 weeks ago         967 B

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) .

[[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 ausgeführt und beendet wird, nachdem eine Testnachricht ausgegeben wurde. Container können jedoch 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 Image von CentOS ausführen. Durch die Kombination der Schalter-i und-t erhalten Sie interaktiven Shell-Zugriff auf den Container:

docker run -it centos

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

Output[root@59839a1b7de2 /]#

Important: Notieren Sie die Container-ID an der Eingabeaufforderung. Im obigen Beispiel ist es59839a1b7de2.

Jetzt können Sie einen beliebigen Befehl im Container ausführen. Installieren wir zum Beispiel den MariaDB-Server im laufenden Container. Sie müssen keinem Befehlsudo voranstellen, da Sie innerhalb des Containers mit Root-Rechten arbeiten:

yum install mariadb-server

[[Schritt 6 - Übernehmen von Änderungen in einem Container in ein Docker-Image] == Schritt 6 - Ü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 des MariaDB-Servers im CentOS-Container wird jetzt ein Container von einem Image ausgeführt, der Container unterscheidet sich jedoch von dem Image, mit dem Sie ihn erstellt haben.

Um den Status des Containers als neues Bild zu speichern, beenden Sie ihn zuerst:

exit

Übernehmen Sie dann die Änderungen mit dem folgenden Befehl in eine neue Docker-Image-Instanz. 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. Die Container-ID ist die, die Sie zuvor im Lernprogramm beim Starten der interaktiven Docker-Sitzung notiert haben. Sofern Sie keine zusätzlichen Repositorys in Docker Hub erstellt haben, ist das Repository in der Regel Ihr Docker Hub-Benutzername:

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

Zum Beispiel:

docker commit -m "added mariadb-server" -a "Sunday Ogwu-Chinuwa" 59839a1b7de2 finid/centos-mariadb

[.note] #Note: Wenn Siecommitein Bild erstellen, wird das neue Bild lokal, dh auf Ihrem Computer, gespeichert. Später in diesem Lernprogramm erfahren Sie, wie Sie ein Image in eine Docker-Registrierung wie Docker Hub übertragen, damit es von Ihnen und anderen bewertet und verwendet werden kann.
#

Nach Abschluss dieses Vorgangs sollte in der Liste der Docker-Images, die sich jetzt auf Ihrem Computer befinden, das neue Image sowie das alte Image angezeigt werden, von dem es abgeleitet wurde:

docker images

Die Ausgabe sollte von dieser Art sein:

OutputREPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
finid/centos-mariadb   latest              23390430ec73        6 seconds ago       424.6 MB
centos                 latest              778a53015523        5 weeks ago         196.7 MB
hello-world            latest              94df4f0ce8a4        2 weeks ago         967 B

Im obigen Beispiel istcentos-mariadb das neue Image, das aus dem vorhandenen CentOS-Image von Docker Hub abgeleitet wurde. Der Größenunterschied spiegelt die vorgenommenen Änderungen wider. In diesem Beispiel wurde der MariaDB-Server installiert. Wenn Sie also das nächste Mal einen Container unter CentOS mit vorinstalliertem MariaDB-Server ausführen müssen, können Sie einfach das neue Image verwenden. Bilder können auch aus einer sogenannten Docker-Datei erstellt werden. Dies ist jedoch ein sehr komplizierter Prozess, der den Rahmen dieses Artikels sprengt. Wir werden das in einem zukünftigen Artikel untersuchen.

[[Schritt-7 -—- Auflisten von Docker-Containern]] == Schritt 7 - Auflisten von Docker-Containern

Nach einer Weile der Verwendung von Docker befinden sich viele aktive (aktive) und inaktive Container auf Ihrem Computer. Um die aktiven anzuzeigen, verwenden Sie:

docker ps

Sie sehen eine Ausgabe ähnlich der folgenden:

OutputCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
f7c79cc556dd        centos              "/bin/bash"         3 hours ago         Up 3 hours                              silly_spence

Um alle aktiven und inaktiven Container anzuzeigen, übergeben Sie den Schalter-a:

docker ps -a

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

docker ps -l

Das Stoppen eines laufenden oder aktiven Containers ist so einfach wie das Eingeben:

docker stop container-id

Diecontainer-id finden Sie in der Ausgabe des Befehlsdocker ps.

[[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.

Registrieren Sie sich unterDocker Hub, um ein Konto in Docker Hub zu erstellen. Melden Sie sich anschließend zum Übertragen Ihres Images zuerst bei Docker Hub an. Sie werden aufgefordert, Folgendes zu authentifizieren:

docker login -u docker-registry-username

Wenn Sie das richtige Kennwort angegeben haben, sollte die Authentifizierung erfolgreich sein. Dann können Sie Ihr eigenes Bild mit dem folgenden Befehl verschieben:

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

Es wird einige Zeit dauern, bis die Ausgabe abgeschlossen ist.

OutputThe push refers to a repository [docker.io/finid/centos-mariadb]
670194edfaf5: Pushed
5f70bf18a086: Mounted from library/centos
6a6c96337be1: Mounted from library/centos

...

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

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/finid/centos-mariadb]
e3fbbfb44187: Preparing
5f70bf18a086: Preparing
a3b5c80a4eba: Preparing
7f18b442972b: Preparing
3ce512daaf78: Preparing
7aae4540b42d: Waiting
unauthorized: authentication required

Melden Sie sich an und wiederholen Sie den Push-Versuch.

Fazit

Docker bietet viel mehr als in diesem Artikel beschrieben. Dies sollte jedoch ausreichen, um Sie in die Arbeit mit CentOS 7 einzuführen. Wie die meisten Open Source-Projekte basiert Docker auf einer sich schnell entwickelnden Codebasis. Machen Sie es sich also zur Gewohnheit, dieblog pagedes Projekts zu besuchen, um die neuesten Informationen zu erhalten.

Überprüfen Sie auch dieother Docker tutorials in der DO-Community.