Verwenden von Docker
Video-Tutorial ansehen
Docker ist eine Plattform für verteilte Anwendungen, mit der Anwendungen in Containern ausgeführt werden können. Die Lösung ist auf Entwickler und Systemadministratoren ausgelegt. Damit können Sie 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. In Plesk können Sie Container ausführen und verwalten, die auf bestimmten Docker-Images basieren. Docker lässt sich nicht nur auf dem lokalen Host, sondern auch auf einem Remotecomputer verwenden.
Anforderungen und Einschränkungen
-
Docker is supported in Plesk for the following operating systems: CentOS 7, RedHat 7, Debian 8, Debian 9, Ubuntu 14.04, Ubuntu 16.04, and Ubuntu 18.04.
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 unter Windows Server 2008 ausgeführt wird.
-
Sie können Docker nicht verwenden, wenn Plesk in einem Docker-Container bereitgestellt wurde.
-
Wenn Sie Docker in Plesk verwenden möchten, benötigen Sie eine zusätzliche Lizenz. Sie können sie entweder separat oder als Teil des Hosting-Pakets 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.
Erste Schritte mit Docker
Installieren Sie die Erweiterung Docker in Plesk.
Um Docker zu verwenden, rufen Sie Docker im linken Navigationsbereich auf.
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.
So verwenden Sie Filter:
-
Klicken Sie auf den Pfeil neben dem Suchfeld.
-
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:
-
Rufen Sie Docker > Docker-Image-Katalog auf.
-
Über das Suchfeld oder Filter können Sie Anwendungen rasch im Katalog finden.
-
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.
-
Um eine bestimmte Version auszuführen, klicken Sie auf den Pfeil neben der Schaltfläche Ausführen, und wählen Sie die Anwendungsversion aus.
-
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.
-
Der Container wird oben auf der Seite Docker-Katalog in der Container-Liste angezeigt.
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.
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.
Warnung: Wenn Port-Mapping konfiguriert ist, wird Docker einem bestimmten Port in allen Netzwerkschnittstellen des Hostsystems zugeordnet. Dies heißt in der Regel, dass von überall auf die Anwendung zugegriffen werden kann. Es wird von Docker angenommen, dass die Authentifizierung in der Anwendung selbst durchgeführt wird. Dies ist jedoch nicht immer der Fall. In MySQL ist der anonyme Zugriff zum Beispiel standardmäßig nicht zulässig, in redis jedoch schon.
In Plesk wird nicht bestimmt, welcher Dienst in einem bestimmten Docker-Container installiert ist, und der Zugriff wird nicht überprüft. Wenn Sie den Zugriff auf die Anwendung außerhalb von Plesk deaktivieren möchten, verwenden Sie eine Firewall für das Hostsystem.
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.
For more information about data in containers, refer to the Docker documentation.
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:
- Rufen Sie Docker auf und klicken Sie unter dem Container, den Sie neu erstellen möchten, auf Details.
- 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:
- Rufen Sie Tools & Einstellungen > Docker (unter Serververwaltung) auf.
- Klicken Sie auf Server hinzufügen und geben Sie die Einstellungen des Remoteservers für Docker an.
- Um diesen Docker-Dienst in Plesk zu verwenden, lassen Sie die Option Aktivieren ausgewählt.
Der Link zu Docker wird im linken Navigationsbereich angezeigt.
So wechseln Sie zwischen Docker-Diensten:
- Rufen Sie Tools & Einstellungen > Docker (unter Serververwaltung) auf.
- 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.
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.
So rufen Sie lokale Images auf und entfernen veraltete lokale Images:
-
Rufen Sie Docker > Docker-Image-Katalog auf.
-
Um alle lokalen Images aufzurufen, klicken Sie auf den Pfeil neben dem Suchfeld und wählen Sie im Filter Repository die Option Lokal aus.
-
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.
-
Um alle Images zu entfernen, klicken Sie auf Alle Images löschen.
-
Um ein bestimmtes Image zu entfernen, klicken Sie auf das Symbol „Entfernen“ 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 Proxy-Regeln > 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.