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