Verwenden von Docker

Inhalt

Docker ist eine Plattform, mit der Anwendungen in Containern ausgeführt werden können. So lässt sich bestimmte Software wie Redis oder MongoDB oder eine bestimmte Software-Version einsetzen, die von Ihrem Betriebssystem nicht unterstützt wird oder die kompiliert werden muss.

Docker ist als Plesk Erweiterung verfügbar. Sie können Container einsetzen und verwalten, die auf bestimmten Docker-Images basieren. Docker lässt sich nicht nur auf dem lokalen Host, sondern auch auf Remoteservern verwenden.

In diesem Artikel erfahren Sie, wie Sie Docker-Container in Plesk erstellen, konfigurieren und verwalten. Hier wird auch beschrieben, wie Sie Docker-Remote-Hosts von Plesk aus steuern können.

Anforderungen und Einschränkungen

Warnung

Die Docker-Erweiterung lädt Images von Docker Hub herunter, ohne sie anzupassen oder zu konfigurieren. Einige Docker-Container oder die darin enthaltene Software sind nur für vertrauenswürdige Umgebungen bestimmt und können eine zusätzliche Sicherheitseinrichtung erfordern. Bevor Sie diese heruntergeladenen Images in Plesk starten, müssen Sie deren Sicherheit selbst erhöhen. Spezifische Anweisungen finden Sie in der Dokumentation des Container- oder Software-Anbieters. Weitere Informationen zur Sicherheit finden Sie zum Beispiel in der Redis-Dokumentation.

  • Docker wird in Plesk unter den folgenden Betriebssystemen unterstützt: CentOS 7, Red Hat Enterprise Linux 7, Debian 10, Debian 11, Ubuntu 18.04, Ubuntu 20.04, Ubuntu 22.04, AlmaLinux 8.x, Rocky Linux 8.x und Virtuozzo 7 mit Update 1 Hotfix 1 (7.0.1-686) oder neuer.

    In Plesk für Windows können Sie Docker verwenden, auch wenn die Plattform auf einem Remotecomputer installiert ist. Weitere Informationen finden Sie weiter unten in diesem Abschnitt unter **Verwenden von Remote Docker**.

  • Sie können Docker nicht verwenden, wenn Plesk in einem Docker-Container bereitgestellt wurde.

  • Wenn Sie Docker-Remote-Dienste in Plesk verwenden möchten, benötigen Sie eine zusätzliche Lizenz. Sie können sie entweder separat oder als Teil der Pakete Hosting Pack, Power Pack oder Developer Pack erwerben.

  • Docker kann nur auf x64-Systemen ausgeführt werden.

  • Docker-Container in Plesk können nicht migriert oder gesichert werden. Sie können jedoch Daten sichern, die in Containern verwendet werden (siehe Volume-Mapping unten), oder Snapshots herunterladen.

  • Virtuozzo 7 mit Update 1 Hotfix 1 (7.0.1-686) oder höher wird unterstützt. Ab diesem Update ist die Firewall für neue auf CentOS 7 basierte Container standardmäßig aktiviert, da Virtuozzo eine erhöhte Sicherheit erforderlich macht. Der Plesk Administrator muss die Firewall manuell konfigurieren, damit alle für Plesk notwendigen Ports geöffnet sind.

Voraussetzungen

Bevor Sie Docker verwenden können, muss die kostenlose Docker-Erweiterung auf dem Plesk Server installiert werden:

Sobald die Erweiterung installiert ist, können Sie beginnen. Die Docker-Option wird im Navigationsbereich angezeigt.

image-docker-menu

Image-Katalog

Im Katalog (Docker > Docker-Image-Katalog) werden in Plesk die Images von https://hub.docker.com/explore angezeigt. Standardmäßig werden nur empfohlene Images angezeigt. Um mehr Images anzuzeigen, suchen Sie über das Suchfeld oder verwenden Sie Filter.

Für jede Anwendung sind mehrere Versionen verfügbar. Sie können eine bestimmte Version ausführen, indem Sie wie unten gezeigt die entsprechende Kennzeichnung auswählen.

image-docker-catalog

So verwenden Sie Filter:

  1. Klicken Sie auf den Pfeil image-down-arrow neben dem Suchfeld.

  2. Geben entweder den Image-Namen oder das Repository an oder beides.

    Die folgenden Repositories stehen zur Auswahl:

    • Lokales Repository: Enthält lokale Images. Diese Images wurden bereits heruntergeladen und sind jetzt auf dem Server mit Docker gespeichert. Weitere Details finden Sie weiter unten in diesem Abschnitt unter Verwalten lokaler Images.
    • Docker Hub: https://hub.docker.com/explore

So führen Sie einen Container aus:

  1. Rufen Sie Docker > Docker-Image-Katalog auf.

  2. Über das Suchfeld oder Filter können Sie Anwendungen rasch im Katalog finden.

  3. Wenn Sie die Beschreibung der Anwendung und die Dokumentation im Docker Hub anzeigen möchten, klicken Sie auf den Image-Namen. Dies gilt nicht für lokale Images.

  4. Um eine bestimmte Version auszuführen, klicken Sie auf den Pfeil neben der Schaltfläche Ausführen, und wählen Sie die Anwendungsversion aus.

  5. Um die aktuellste Version der ausgewählten Anwendung auszuführen, klicken Sie auf Ausführen.

    Wenn das Image lokal gespeichert ist, wird die Schaltfläche Ausführen (lokal) angezeigt.

    In Plesk wird ein Container erstellt und Sie werden aufgefordert, die entsprechenden Einstellungen wie Umgebungsvariablen festzulegen. Anschließend wird der Container ausgeführt. Sie können die Ausführung abbrechen, indem Sie auf dem Bildschirm Einstellungen auf Abbrechen klicken. Weitere Details zu den Einstellungen finden Sie weiter unten auf dieser Seite unter Container-Einstellungen.

  6. Der Container wird oben auf der Seite Docker-Katalog in der Container-Liste angezeigt.

    image-docker-container-running

Im Protokoll (Protokolle) finden Sie Informationen zu den Einstellungen, die für das korrekte Ausführen erforderlich sind.

Container-Einstellungen

Bemerkung

Wenn Sie Container-Einstellungen ändern möchten, müssen Sie den Container nicht anhalten. Wenn Sie neue Einstellungen speichern, wird der Container in Plesk neu erstellt.

Um Container-Einstellungen zu bearbeiten, rufen Sie Einstellungen oder Details > Einstellungen auf.

image-container-settings

Speicherlimit

Standardmäßig ist die RAM-Nutzung in einem Docker-Container nicht begrenzt. Um einen Grenzwert für RAM festzulegen, deaktivieren Sie das Kontrollkästchen Unbegrenzt und geben Sie einen Wert in MB in das Feld Speicherlimit ein.

Bemerkung

CPU-Verbrauch und Datenträgernutzung können derzeit für einen Docker-Container nicht eingeschränkt werden.

Bemerkung

Docker-Containers sind Objekte auf Administratorebene und werden nicht von Cgroup-Beschränkungen auf Abonnementebene (CPU, RAM und Datenträgernutzung) gesteuert.

Automatischer Start

Wenn die Option Automatischer Start nach dem Systemneustart nicht ausgewählt wurde, ist die Website des Containers nach dem Systemneustart möglicherweise nicht verfügbar und Sie müssen den Container manuell starten.

Port-Mapping

Standardmäßig ist Automatisches Port-Mapping aktiviert und der interne Port des Containers wird einem beliebigen Port des Hostsystems zugeordnet, zum Beispiel 32768.

Um den Port auf dem Hostsystem zu ändern, deaktivieren Sie die Option Automatisches Port-Mapping und geben Sie einen anderen externen Port unter Manuelles Mapping an. Falls Manuelles Mapping nicht angezeigt wird, wenn Sie die Option deaktivieren, heißt das, dass der Container Ports nicht verfügbar macht.

Bei der manuellen Zuordnung wird Docker standardmäßig nur dem angegebenen Port an der localhost-Schnittstelle des Hostsystems (127.0.0.1) zugeordnet. So ist der Port vom Internet aus unzugänglich und die Anwendung im Container ist vor Angriffen geschützt. Um Docker dem angegebenen Port auf allen Netzwerkschnittstellen des Hostsystems zuzuordnen, heben Sie die Auswahl des Kästchens „Privater Port auf dem Host“ auf. In diesem Fall ist die Anwendung innerhalb des Containers vom Internet aus zugänglich und kann über den angegebenen Port über jede IP-Adresse des Hostsystems erreicht werden.

Warnung

Docker geht davon aus, dass die Authentifizierung von der Anwendung selbst durchgeführt wird, aber manchmal ist das nicht der Fall (z. B. erlaubt MySQL/MariaDB standardmäßig keinen anonymen Zugriff, aber Redis schon). Wenn die Anwendung innerhalb eines Containers vom Internet aus zugänglich ist, kann dies dazu führen, dass die Anwendung Ziel eines böswilligen Angriffs ist.

Volume-Mapping

Docker-Volumes sind Verzeichnisse auf Ihrem Server, die in einem Docker Container bereitgestellt wurden. Somit haben Sie einen permanenten Speicher, der von Ihrem Hostsystem aus zugegriffen werden kann. Die Daten in Docker-Volumes können gesichert werden und, noch viel wichtiger, werden nicht gelöscht, wenn Sie einen Container beenden oder löschen.

Weitere Informationen zu Daten in Containern finden Sie in der Docker-Dokumentation.

Um ein Volume-Mapping hinzuzufügen, geben Sie Folgendes an:

  • Feld „Ziel“ (links): Absoluter Pfad zu einem Verzeichnis im Container
  • Feld „Quelle“ (rechts): Absoluter Pfad zum Verzeichnis auf dem Server, das im Container bereitgestellt werden soll

Um weitere Verzeichnisse zuzuordnen, klicken Sie auf Mapping hinzufügen.

Einrichten von Umgebungsvariablen

Umgebungsvariablen werden von der Anwendung im Container verwendet. Sie müssen möglicherweise zusätzliche Variablen hinzufügen oder vorhandene bearbeiten. In Plesk können Sie so viele Variablen wie erforderlich hinzufügen.

Aktionen mit Containern

Sie können Folgendes mit Containern ausführen:

  • Container neu starten (Neu starten) oder beenden (Beenden). In diesen Fällen wird der Container mit den aktuellen Einstellungen neu erstellt.

    Bemerkung

    Falls Sie die Daten auf dem bereitgestellten Volume nicht gespeichert haben, gehen sie verloren (siehe den Abschnitt unten Volume-Mapping).

  • Protokolle und Ressourcenverbrauch anzeigen (Details).

  • Container-Einstellungen wie Umgebungsvariablen oder Volume-Mapping ändern (Einstellungen oder Details > Einstellungen).

    In Plesk unter CentOS können Sie einen Speichergrenzwert für einen Container festlegen (Einstellungen > Speicherlimit).

  • Container umbenennen (Einstellungen > Containername).

  • Container mithilfe desselben Images oder einer anderen Image-Version neu erstellen (Details > Neu erstellen).

  • Image basierend auf einem Container mit benutzerdefinierten Einstellungen erstellen (Details > Als Image speichern).

  • Snapshot eines Containers aufnehmen (Details > Snapshot herunterladen).

  • Container entfernen (Entfernen oder Details > Entfernen).

Neuerstellung eines Containers

In der Regel müssen Sie einen Container neu erstellen, wenn Sie die Anwendung auf eine neue Version aktualisieren möchten. Sie können einen Container nicht nur mit einer neueren, sondern mit jeder beliebigen, im Katalog verfügbaren Anwendungsversion neu erstellen.

Benutzerdefinierte Einstellungen werden bei der Neuerstellung erhalten. Um von der Anwendung im Container verwendete Daten beizubehalten, geben Sie ein Volume-Mapping an, bevor Sie einen Container neu erstellen. Dank Volume-Mapping können Sie auf Verzeichnisse zugreifen, die in einem Container verwendet werden (siehe Volume-Mapping in den Container-Einstellungen).

So erstellen Sie einen Container neu:

  1. Rufen Sie Docker auf und klicken Sie unter dem Container, den Sie neu erstellen möchten, auf Details.
  2. Klicken Sie in den Container-Einstellungen auf Neu erstellen und geben Sie die Image-Version an. Legen Sie außerdem fest, ob Standardumgebungsvariablen verwendet werden sollen.

Verwenden von Remote-Docker

Standardmäßig wird Docker als Plesk Komponente installiert. Sie können jedoch einen oder mehrere Docker-Dienste außerhalb von Plesk verwenden. Beachten Sie, dass Sie nur jeweils einen Dienst gleichzeitig verwenden können. Der Hostname des ausgewählten Servers ist im Titel des Docker-Katalogs in Plesk zu finden.

Bemerkung

Zur Verwaltung von Docker-Remote-Diensten ist ein Plesk Lizenzschlüssel als Add-on erforderlich. Ohne dieses Add-on können Sie nur den lokalen Docker-Dienst verwalten, der auf dem Plesk Server ausgeführt wird.

Remote-Dienste konfigurieren

Konfigurieren Sie den Remoteserver, auf dem Docker ausgeführt wird, wie in der Docker-Dokumentation beschrieben, um ihn als Remoteserver in Plesk zu verwenden.

Remote-Dienste verwalten

Die folgenden Schritte gelten für Plesk für Linux und für Windows.

So verwenden Sie Docker, wenn dieser auf einem Remotehost ausgeführt wird:

  1. Rufen Sie Tools & Einstellungen > Docker (unter Serververwaltung) auf.
  2. Klicken Sie auf Server hinzufügen und geben Sie die Einstellungen des Remoteservers für Docker an.
  3. Um diesen Docker-Dienst in Plesk zu verwenden, lassen Sie die Option Aktivieren ausgewählt.

Der Link zu Docker wird im Navigationsbereich angezeigt.

So wechseln Sie zwischen Docker-Diensten:

  1. Rufen Sie Tools & Einstellungen > Docker (unter Serververwaltung) auf.
  2. Wählen Sie in der Serverliste den Server aus, den Sie verwenden möchten, und klicken Sie auf Aktivieren.

Sie können den Server auch aktivieren, wenn Sie dessen Einstellungen bearbeiten.

image-remote-docker-hosts

Erstellen von Images mit benutzerdefinierten Einstellungen

Wenn Sie ein neues Image basierend auf den Änderungen an einem Container erstellen möchten, verwenden Sie den Befehl Als Image speichern. Damit wird ein Snapshot Ihres Containers erstellt, der als neues Image im Image-Katalog angezeigt wird. So können Sie Images mit benutzerdefinierten Einstellungen wie Umgebungsvariablen erstellen.

So erstellen Sie ein Image von einem Ihrer Container:

Rufen Sie Docker > Details unter dem Containernamen > Als Image speichern auf und geben Sie Folgendes an (optional):

  • Image-Name. Standardmäßig wird eine ID generiert und als Name verwendet.
  • Tag. Sie können hier die Image-Version angeben. Standardmäßig ist diese Version „die aktuellste Version“.

Das erstellte Image wird im Image-Katalog angezeigt und ist als Lokales Image gekennzeichnet.

Verwalten lokaler Images

Lokale Images sind Images, die von Docker auf der lokalen Festplatte gespeichert werden. Sie müssen sie also nicht aus dem Image-Katalog herunterladen.

Ein Image wird in den folgenden Fällen als lokal bezeichnet:

  • Sie haben eine Version (Tag) eines Images ausgewählt und das Image wird heruntergeladen. Entweder führen Sie den Container später aus oder brechen die Ausführung ab (im Bildschirm Einstellungen). Das Image wird lokal gespeichert.
  • Sie laden ein Image in den Docker-Katalog in Plesk hoch (Image hochladen im Docker-Image-Katalog).
  • Sie haben ein benutzerdefiniertes Image von einem Container erstellt (siehe Erstellen von Images mit benutzerdefinierten Einstellungen oben).
  • Sie haben ein Image mithilfe der Befehlszeilenschnittstelle erstellt.

Wenn in Docker mindestens eine heruntergeladene Version einer Gruppe von Image-Versionen vorhanden ist, wird dieses Image im Katalog als Lokales Image gekennzeichnet. Ausführen (lokal) weist darauf hin, dass die aktuellste Version bereits heruntergeladen wurde. In Plesk wird auch angezeigt, wie viele lokale Images für ein Produkt vorhanden sind.

image-docker-local-images

So rufen Sie lokale Images auf und entfernen veraltete lokale Images:

  1. Rufen Sie Docker > Docker-Image-Katalog auf.

  2. Um alle lokalen Images aufzurufen, klicken Sie auf den Pfeil neben dem Suchfeld und wählen Sie im Filter Repository die Option Lokal aus.

  3. Um alle lokalen Images eines bestimmten Produkts aufzurufen, klicken Sie auf den Link unter dem Produktnamen. Alle Tags eines lokalen Images und der verbrauchte Speicherplatz werden angezeigt.

    image-remove-outdated-images

  4. Um alle Images zu entfernen, klicken Sie auf Alle Images löschen.

  5. Um ein bestimmtes Image zu entfernen, klicken Sie auf das Symbol „Entfernen“ image-red-cross neben dem Image, das Sie entfernen möchten.

Konfigurieren von nginx, damit Anforderungen über einen Proxy von Domains zu einem Container umgeleitet werden

Einige Docker-Container machen Ports verfügbar, damit über diese Ports auf Anwendungen in Containern zugegriffen werden kann.

Wenn Sie eine Anwendung in einem Docker-Container auf Ihrer Website verwenden, möchten Sie den nicht standardmäßigen Port eventuell nicht in der URL angeben. Um Unannehmlichkeiten zu vermeiden, können Sie für nginx festlegen, dass Anforderungen über einen Proxy von Domains zu diesem Port weitergeleitet werden. So können Domains den Standardport (z. B. 80) verwenden und Sie müssen den Port nicht extra in der URL angeben.

Anforderungen

  • nginx muss in Plesk ausgeführt werden.
  • Sie müssen den Port im Container manuell einem Port auf dem Hostsystem zuweisen (zum Beispiel 32768). Gehen Sie dazu zu Docker, wählen Sie einen Container aus, klicken Sie auf Einstellungen und deaktivieren Sie die Option Automatisches Port-Mapping.

Nachdem Sie den Port in einem Container manuell einem Port auf Ihrem System zugewiesen haben (z. B. 32768), können Sie für nginx festlegen, dass Anforderungen über einen Proxy von Domains zu diesem Port weitergeleitet werden. So können Domains den Standardport in nginx (z. B. 80) verwenden. Fügen Sie dafür wie folgt eine Regel für nginx in den Domain-Einstellungen hinzu:

Gehen Sie zu Websites & Domains, rufen Sie die Domain auf und wählen Sie Proxyregel für Docker > Regel hinzufügen aus. Geben Sie dann Folgendes an:

  • URL: Geben Sie die URL der Website an, die eine im Container ausgeführte Anwendung verwendet. Es kann sich dabei um die ganze oder nur Teile der Website handeln.
  • Container: Wählen Sie die Anwendung aus, die als Docker ausgeführt wird.
  • Port: Wählen Sie eine der Zuweisungen aus, die in den Container-Einstellungen angegeben wurde (ein Port in einem Container, der einem Port auf Ihrem System zugewiesen ist). Die Anforderungen werden von nginx über einen Proxy an den Port des Systems weitergeleitet.

Proxy-Regeln werden in der Webserver-Konfiguration implementiert, z. B. in der Datei nginx.conf der Website (in /var/www/vhosts/system/$domain/conf/):

#extension docker begin
location ~ ^/.* {
    proxy_pass http://0.0.0.0:9080;
    proxy_set_header Host             $host;
    proxy_set_header X-Real-IP        $remote_addr;
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
}
#extension docker end

Proxy-Regeln sollten auf Servern mit NAT einwandfrei funktionieren.

Bemerkung

Docker-Container, die über Proxy-Regeln mit einer Website verknüpft sind, werden nicht für die Berechnung der Speicherplatznutzung eines Abonnements herangezogen. Eine Ausnahme wäre ein Website-Verzeichnis, das in einem Docker-Container als Volume bereitgestellt ist. In diesem Fall werden alle Dateien im Container für die Speicherplatznutzung der Website miteingerechnet.