GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So installieren Sie Docker CE auf RHEL 8 / CentOS 8

Die neueste Version von RHEL 8 / CentOS 8. Red Hat hat seine eigenen Tools entwickelt, buildah und podman , die darauf abzielen, mit bestehenden Docker-Images kompatibel zu sein und ohne Abhängigkeit von einem Daemon zu funktionieren, was die Erstellung von Containern als normale Benutzer ermöglicht, ohne dass spezielle Berechtigungen erforderlich sind (mit einigen Einschränkungen:z. B. ist dies zum Zeitpunkt des Schreibens noch nicht möglich Host-Ports dem Container ohne Berechtigungen zuordnen).

Einige spezifische Tools fehlen jedoch noch:ein Äquivalent zu docker-compose , existiert beispielsweise noch nicht. In diesem Tutorial werden wir sehen, wie das ursprüngliche Docker CE auf Rhel8 installiert und ausgeführt wird, indem das offizielle Docker-Repository für CentOS7 verwendet wird.

In diesem Tutorial lernen Sie:

  • So aktivieren Sie das Docker-ce-Repository auf RHEL 8 / CentOS 8
  • So installieren Sie Docker und Docker-Compose unter RHEL 8 / CentOS 8


Docker installiert auf RHEL 8 / CentOS 8

Softwareanforderungen und verwendete Konventionen

Softwareanforderungen und Linux-Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder verwendete Softwareversion
System RHEL 8 / CentOS 8
Software Docker-Version 18.09.2
Andere Berechtigung zum Ausführen des Befehls mit Root-Rechten.
Konventionen # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder durch Verwendung von sudo Befehl
$ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden

Was ist Docker?

Docker ist ein Open-Source-Projekt, das die Erstellung und Verteilung von Anwendungen innerhalb von containers ermöglicht , bei denen es sich um standardisierte Umgebungen handelt, die unabhängig vom Hostsystem einfach repliziert werden können. Während in Red Hat Enterprise Linux 7 Docker offiziell unterstützt wurde, wurde es in der neuen Version dieses Open-Source-Betriebssystems durch eine Reihe anderer von Red Hat selbst entwickelter Tools ersetzt:buildah und podman .

Durch die Verwendung eines externen Repositorys ist es jedoch weiterhin möglich, Docker CE (Community Edition) zu installieren. In diesem Tutorial werden wir sehen, wie man dieses Repository installiert; Beachten Sie jedoch, dass es ursprünglich für CentOS 7 gedacht war (ein RHEL-Klon) und die Community-Version von Docker bietet keine offizielle Unterstützung für Red Hat Enterprise Linux. Aus diesem Grund gibt es Probleme – wir diskutieren sie weiter unten.

Hinzufügen des externen Repositorys

Da Docker auf RHEL 8 / CentOS 8 nicht verfügbar ist, müssen wir ein externes Repository hinzufügen, um die Software zu erhalten. In diesem Fall verwenden wir das offizielle CentOS-Repository von Docker CE:Zum jetzigen Zeitpunkt ist dies die einzige Möglichkeit, Docker CE auf RHEL 8 / CentOS 8 zu installieren.

Der dnf config-manager Mit dem Dienstprogramm können wir unter anderem ein Repository in unserer Distribution einfach aktivieren oder deaktivieren. Standardmäßig nur der appstream und baseos Repositories sind auf Rhel8 aktiviert; wir müssen auch das docker-ce hinzufügen und aktivieren Repo. Alles, was wir tun müssen, um diese Aufgabe zu erfüllen, ist den folgenden Befehl auszuführen:

$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Wir können überprüfen, ob das Repository aktiviert wurde, indem wir uns die Ausgabe des folgenden Befehls ansehen:

$ sudo dnf repolist -v

Der obige Befehl gibt detaillierte Informationen zu allen aktivierten Repositories zurück. Folgendes sollten Sie an dieser Stelle sehen:

Repo-id      : docker-ce-stable
Repo-name    : Docker CE Stable - x86_64
Repo-revision: 1549905809
Repo-updated : Mon 11 Feb 2019 06:23:29 PM CET
Repo-pkgs    : 30
Repo-size    : 618 M
Repo-baseurl : https://download.docker.com/linux/centos/7/x86_64/stable
Repo-expire  : 172,800 second(s) (last: Mon 18 Feb 2019 10:23:54 AM CET)
Repo-filename: /etc/yum.repos.d/docker-ce.repo

Repo-id      : rhel-8-for-x86_64-appstream-rpms
Repo-name    : Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs)
Repo-revision: 1542158694
Repo-updated : Wed 14 Nov 2018 02:24:54 AM CET
Repo-pkgs    : 4,594
Repo-size    : 4.9 G
Repo-baseurl : https://cdn.redhat.com/content/beta/rhel8/8/x86_64/appstream/os
Repo-expire  : 86,400 second(s) (last: Mon 18 Feb 2019 10:23:55 AM CET)
Repo-filename: /etc/yum.repos.d/redhat.repo

Repo-id      : rhel-8-for-x86_64-baseos-rpms
Repo-name    : Red Hat Enterprise Linux 8 for x86_64 - BaseOS Beta (RPMs)
Repo-revision: 1542158719
Repo-updated : Wed 14 Nov 2018 02:25:19 AM CET
Repo-pkgs    : 1,686
Repo-size    : 925 M
Repo-baseurl : https://cdn.redhat.com/content/beta/rhel8/8/x86_64/baseos/os
Repo-expire  : 86,400 second(s) (last: Mon 18 Feb 2019 10:23:56 AM CET)
Repo-filename: /etc/yum.repos.d/redhat.repo
Total packages: 6,310

Docker-ce installieren

Der docker-ce-stable Das Repository ist jetzt auf unserem System aktiviert. Das Repository enthält mehrere Versionen von docker-ce Paket, um alle anzuzeigen, können wir Folgendes ausführen:

$ dnf list docker-ce --showduplicates | sort -r
docker-ce.x86_64            3:19.03.2-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.1-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.0-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.9-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.8-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.7-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.6-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.5-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.4-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.3-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.2-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.1-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.0-3.el7                     docker-ce-stable
docker-ce.x86_64            18.06.3.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.2.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.1.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.0.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.03.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            18.03.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.12.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.12.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.09.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.09.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.3.ce-1.el7                    docker-ce-stable
docker-ce.x86_64            17.03.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.0.ce-1.el7.centos             docker-ce-stable

Welche Version installieren? Nun, Red Hat scheint die Installation von containerd.io irgendwie blockiert zu haben> 1.2.0-3.el7 , das eine Abhängigkeit von docker-ce ist . Führen Sie aus diesem Grund einfach sudo dnf install docker-ce aus Befehl, funktioniert nicht. Wie wir gleich sehen werden, ist es immer noch möglich, dieses Problem zu umgehen; einmal docker-ce installiert ist, zeigt sich jedoch ein weiteres Problem:solange firewalld , der System-Firewall-Manager ist aktiviert, DNS resolution innerhalb von Docker-Containern funktioniert nicht.

Dies ist natürlich ein kritisches Problem. Wenn Sie dennoch mit der Installation fortfahren möchten, finden Sie hier die möglichen Methoden, die verwendet werden können, um die Abhängigkeitsprobleme zu vermeiden:

  • Installieren Sie eine bestimmte Version von docker-ce was eine installierbare Version von containerd.io erfordert Paket;
  • Erzwingen Sie die Installation, indem Sie --nobest angeben Möglichkeit
  • Installieren Sie die neueste verfügbare containerd.io Drehzahl manuell;

Installieren Sie eine bestimmte Version von docker-ce

Zum Zeitpunkt des Schreibens der Versionen von docker-ce die problemlos installiert werden sind:

  • docker-ce-3:18.09.1-3.el7
  • docker-ce-18.06.3.ce-3.el7;
  • docker-ce-17.12.1.ce-1.el7.centos

Um eine bestimmte Version zu installieren, müssen wir lediglich den vollständig qualifizierten Paketnamen angeben, zum Beispiel:

$ sudo dnf install docker-ce-3:18.09.1-3.el7

Erzwingen Sie die Installation von docker-ce mit der Option –nobest

Normalerweise wird bei der Installation eines Pakets der beste verfügbare Kandidat aus einem Repository ausgewählt. In diesem Fall zum Beispiel die Installation der neusten Version von docker-ce wird versucht (und scheitert). Durch die Verwendung von --nobest Option können wir dieses Verhalten so ändern, dass die erste Version von docker-ce mit erfüllbaren Abhängigkeiten wird als „Fallback“ ausgewählt, in diesem Fall 3:18.09.1-3.el7 .

$ sudo dnf install --nobest docker-ce
Dependencies resolved.

Problem: package docker-ce-3:19.03.2-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
  - cannot install the best candidate for the job
  - package containerd.io-1.2.2-3.3.el7.x86_64 is excluded
  - package containerd.io-1.2.2-3.el7.x86_64 is excluded
  - package containerd.io-1.2.4-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.5-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.6-3.3.el7.x86_64 is excluded
=======================================================================================================================================================
 Package                            Arch         Version                                                  Repository                              Size
=======================================================================================================================================================
Installing:
 docker-ce                          x86_64       3:18.09.1-3.el7                                          docker-ce-stable                        19 M
Installing dependencies:
 containerd.io                      x86_64       1.2.0-3.el7                                              docker-ce-stable                        22 M
 docker-ce-cli                      x86_64       1:19.03.2-3.el7                                          docker-ce-stable                        39 M
 container-selinux                  noarch       2:2.94-1.git1e99f1d.module+el8.0.0+4017+bbba319f         rhel-8-for-x86_64-appstream-rpms        43 k
 tar                                x86_64       2:1.30-4.el8                                             rhel-8-for-x86_64-baseos-rpms          838 k
 libcgroup                          x86_64       0.41-19.el8                                              rhel-8-for-x86_64-baseos-rpms           70 k
 python3-policycoreutils            noarch       2.8-16.1.el8                                             rhel-8-for-x86_64-baseos-rpms          2.2 M
 python3-libsemanage                x86_64       2.8-5.el8                                                rhel-8-for-x86_64-baseos-rpms          127 k
 python3-setools                    x86_64       4.2.0-2.el8                                              rhel-8-for-x86_64-baseos-rpms          598 k
 checkpolicy                        x86_64       2.8-2.el8                                                rhel-8-for-x86_64-baseos-rpms          338 k
 python3-audit                      x86_64       3.0-0.10.20180831git0047a6c.el8                          rhel-8-for-x86_64-baseos-rpms           85 k
 policycoreutils-python-utils       noarch       2.8-16.1.el8                                             rhel-8-for-x86_64-baseos-rpms          228 k
Skipping packages with broken dependencies:
 docker-ce                          x86_64       3:19.03.2-3.el7                                          docker-ce-stable                        24 M

Transaction Summary
=======================================================================================================================================================
Install  12 Packages
Skip      1 Package

Total download size: 85 M
Installed size: 351 M
Is this ok [y/N]:

Installieren Sie das neueste verfügbare containerd.io-Paket manuell

Wenn wir unbedingt die neueste Version von docker-ce installieren müssen , können wir die erforderliche Version von containerd.io installieren manuell durch Ausführen von:

$ sudo dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

Nachdem das Paket installiert ist, können wir einfach das neueste docker-ce installieren :

$ sudo dnf install docker-ce
Dependencies resolved.
=======================================================================================================================================================
  Package                          Arch                      Version                             Repository                                        Size
=======================================================================================================================================================
Installing:
  docker-ce                        x86_64                    3:19.03.2-3.el7                     docker-ce-stable                                  24 M
Installing dependencies:
  docker-ce-cli                    x86_64                    1:19.03.2-3.el7                     docker-ce-stable                                  39 M
  tar                              x86_64                    2:1.30-4.el8                        rhel-8-for-x86_64-baseos-rpms                    838 k
  libcgroup                        x86_64                    0.41-19.el8                         rhel-8-for-x86_64-baseos-rpms                     70 k

Transaction Summary
=======================================================================================================================================================
Install  4 Packages

Total download size: 65 M
Installed size: 275 M
Is this ok [y/N]:

Diese Option ist weniger praktisch, da die containerd.io Paket wird nicht als Abhängigkeit von docker-ce installiert , daher wird es nicht automatisch entfernt, wenn letzteres vom System deinstalliert wird.

Unabhängig davon, welche Methode wir verwenden, um docker-ce zu installieren , wie bereits erwähnt, um eine DNS resolution durchzuführen innerhalb von Docker-Containern arbeiten, müssen wir firewalld deaktivieren (möglicherweise ist auch ein Systemneustart erforderlich):

$ sudo systemctl disable firewalld

Starten und aktivieren Sie den Docker-Daemon

Einmal docker-ce installiert ist, müssen wir den Docker-Daemon starten und aktivieren, damit er auch automatisch beim Booten gestartet wird. Der Befehl, den wir ausführen müssen, ist der folgende:

$ sudo systemctl enable --now docker

An diesem Punkt können wir bestätigen, dass der Daemon aktiv ist, indem wir Folgendes ausführen:

$ systemctl is-active docker
active

Ebenso können wir überprüfen, ob es beim Booten aktiviert ist, indem wir Folgendes ausführen:

$ systemctl is-enabled docker
enabled

Docker-Compose installieren

Docker compose ist ein sehr nützliches Paket, mit dem wir Multi-Container-Anwendungen verwalten können, wie zum Beispiel solche, die auf dem LAMP-Stack basieren, wo jeder Teil der Umgebung (PHP, Apache, MariaDB) von einem dedizierten Container bereitgestellt wird (falls Sie interessiert sind Sehen Sie sich im Betreff unser Tutorial zum Erstellen eines Docker-basierten Lampenstapels an). Das Paket ist weder auf Rhel8 verfügbar, noch existiert ein Äquivalent zur Verwendung mit den Rhel-Tools. Es ist jedoch auf viele Arten möglich, es zu installieren:Lesen Sie einfach weiter und entscheiden Sie, was am besten zu Ihnen passt.

Globale Installation

So sollten wir docker-compose installieren variiert je nachdem, ob wir es global oder nur für einen einzelnen Benutzer installieren möchten. Zum Zeitpunkt des Schreibens besteht die einzige Möglichkeit, es global zu installieren, darin, die Binärdatei von der Github-Seite des Projekts herunterzuladen:

$ curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o docker-compose

Sobald die Binärdatei heruntergeladen ist, verschieben wir sie nach /usr/local/bin und wir machen es ausführbar:

$ sudo mv docker-compose /usr/local/bin && sudo chmod +x /usr/local/bin/docker-compose

Der /usr/local Hierarchie ist nicht zufällig gewählt. Diese Verzeichnisstruktur wird für Dateien verwendet, die vom lokalen Administrator manuell installiert werden (z. B. für Software, die aus den Quellen kompiliert wurde), um eine Trennung von der mit dem Systempaketmanager installierten Software sicherzustellen.

Obwohl es für einen normalen Benutzer möglich ist, Docker-bezogene Befehle auszuführen, wenn er Teil des docker ist group (die Gruppe wird automatisch erstellt, wenn wir docker-ce installieren), müssen sie aus Sicherheitsgründen standardmäßig mit Root-Rechten ausgeführt werden. Wenn wir Letzteres tun müssen, da /usr/local/bin Das Verzeichnis befindet sich nicht im PATH des Root-Benutzers , müssen wir entweder die Binärdatei aufrufen und ihren Speicherort angeben oder /usr/local/bin hinzufügen zum PATH selbst. Die erste Option ist die, die ich in diesem Fall empfehle.

Installation pro Benutzer

Wenn unser Benutzer Teil des docker ist Gruppe, und somit ist es erlaubt, Docker-Befehle auszuführen, und seit docker-compose ist als Python-Paket verfügbar, wir können es auch mit pip installieren , der Python-Paketmanager. Stellen Sie zunächst sicher, dass Pip selbst installiert ist:

$ sudo dnf install python3-pip

Um Docker-Compose zu erhalten, führen wir Folgendes aus:

$ pip3.6 install docker-compose --user

Bitte beachten Sie, dass selbst wenn es möglich wäre, Pip als Root auszuführen, um ein Paket global zu installieren, dies nicht empfohlen und dringend davon abgeraten wird.

Docker testen

Wir haben docker und docker-compose installiert. Um jetzt zu überprüfen, ob alles wie erwartet funktioniert, können wir versuchen, ein Image zu erstellen und einen Container auszuführen:In diesem Fall verwenden wir den offiziellen httpd ein. Alles, was wir tun müssen, ist den folgenden Befehl auszuführen:

sudo docker run --rm --name=linuxconfig-test -p 80:80 httpd

Da der httpd Bild nicht lokal vorhanden ist, wird es automatisch abgerufen und erstellt. Schließlich wird ein darauf basierender Container im Vordergrund gestartet (er wird automatisch entfernt, wenn er gestoppt wird). Wir sollten It works! sehen können Nachricht, wenn wir unsere Maschinen-IP über den Browser erreichen.

Schlussfolgerungen

Red Hat Enterprise Linux 8 unterstützt Docker nicht:Auf dieser Distribution wurde es durch Red Hat-eigene Tools wie buildah ersetzt und podman , die mit Docker kompatibel sind, aber keine Server/Client-Architektur benötigen, um ausgeführt zu werden. Die Verwendung nativer Tools ist nach Möglichkeit immer der empfohlene Weg, aber aus dem einen oder anderen Grund möchten Sie vielleicht trotzdem das ursprüngliche Docker installieren. In diesem Tutorial haben wir gesehen, wie es möglich ist, Docker CE zu installieren auf Rhel8, indem Sie das offizielle Docker-Repository für CentOS7 verwenden, das ein 100 % kompatibler Klon ist.

Dies ist keine ideale Lösung, und wie wir gesehen haben, sind im Moment einige Problemumgehungen erforderlich, damit Docker auf RHEL8 funktioniert. Wenn neue Probleme auftreten oder bessere Lösungen für die oben genannten Probleme gefunden werden, wird dieser Artikel entsprechend aktualisiert. Bleiben Sie dran.


Cent OS
  1. So installieren Sie Docker unter CentOS 7

  2. So installieren Sie Docker Compose unter CentOS 7

  3. So installieren Sie Docker unter CentOS 7 / RHEL 7

  4. So installieren Sie Docker in CentOS

  5. So installieren Sie Docker unter CentOS / RHEL / Fedora

So installieren Sie Compass auf RHEL 8 / CentOS 8

So installieren Sie Puppet unter RHEL 8 / CentOS 8

So installieren Sie YUM auf RHEL 8 / CentOS 8

So installieren Sie Docker CE auf CentOS 8 / RHEL 8

So installieren Sie Docker unter CentOS

So installieren Sie Docker unter CentOS 7