Tutorial: Wie erstelle ich einen Container per SSH?


Dieser Artikel befindet sich zur Zeit in Bearbeitung

Container per SSH erstellen

Schritt 1: Container-Funktion aktivieren

Containeraktivieren.png Wenn Sie im DCP zum Container-Feature unter "Webspace" -> "Container" gehen, werden Sie sehen, dass das Feature erst im Haupt-FTP-User aktiviert werden muss, bevor man das ganze überhaupt nutzen kann. Das können Sie tun, indem Sie dort auf den Link "FTP-Benutzer-Verwaltung" klicken und in der FTP-User-Übersicht auf Ihren Hauptaccount klicken. Dieser besteht in der Regel aus einem kleinen "a" und einer fünfstelligen Zahlenfolge und ist auch der Benutzername für das DCP, bpsw. a12345.

Containeraktiverenpart2.png

  1. Wenn Sie im richtigen FTP-User sind, sollten Sie an dieser Stelle (1) die Container-Funktion aktivieren können. Ggfs. können Sie hier zusätzlich prüfen, ob die anderen Settings ("Aktiv" & "SSH") auch auf aktiv gestellt sind.
  2. Klicken Sie zum Schluss auf den Button "Übernehmen"(2), damit die Einstellungen gespeichert werden.

Schritt 2: Per SSH mit dem Server verbinden

Zuerst müssen Sie sich mit dem Hauptuser per SSH mit dem Server verbinden. Nur der Hauptuser ist berechtigt, die Container zu verwalten. (DCP-User können die Container-Funktion vorerst nicht verwenden) Wie Sie sich per SSH mit dem Server verbinden können, finden Sie hier: https://support.artfiles.de/Tutorial:_SSH-Zugang_nutzen

Schritt 3: Image raussuchen, welches man installieren möchte

Im Docker Hub können Sie nach Ihrem gewünschten Image suchen und dementsprechend bei uns installieren. Alternativ können Sie per SSH direkt auf dem Server nach dem gewünschten Image suchen mit

docker search --filter is-official=true *NameDerGesuchtenImage*

Im Beispiel von "NextCloud" würde das so aussehen:

docker search --filter is-official=true nextcloud

Falls Sie hier nicht die standardmäßig letzte Version installieren möchten, können Sie mit diesem Befehl nach dem korrekten Tag suchen.:

docker search --list-tags VollständigerImageName

Im Beispiel von "NextCloud" würde das so aussehen:

docker search --list-tags docker.io/library/nextcloud

Für die Image-Installation können Sie über Docker Hub ggfs. weitere Informationen bzgl. Umgebungsvariablen, Mount- und Portzuweisungen einsehen.

Schritt 4: Container anlegen und starten

Vorab: Falls ein Image bereits lokal existiert (prüfbar mit docker images), sollte man sicherheitshalber einmal den Befehl
docker pull IMAGE:TAG
ausführen und die lokale Image (falls gewünscht) updaten.

Mit dem Befehl

docker run [OPTIONS] IMAGE [:TAG|@DIGEST] [CMD] [ARG…]

können Images installiert und direkt gestartet werden.

Standardmäßig sollte bei der Image-Installation zusätzlich zum Image-Namen IMAGE:TAG ein -d -p HOSTPORT:CONTAINERPORT -v VOLUME:VOLUMEDESTINATION mitgegeben werden:

docker run -d -p HOSTPORT:CONTAINERPORT -v VOLUMENAME:VOLUMEDESTINATION IMAGE:TAG
Mit -d können Sie bei der Erstellung mit angeben, dass der Container im Hintergrund laufen und somit attached werden soll.
Mit -p HOSTPORT:CONTAINERPORT können Sie Ihrem Container einen Port zuweisen, damit dieser bspw. über Port 80 erreichbar ist.
  • Host-Port: Der "Host-Port" ist der Port auf dem Host-System (der Maschine, auf der der Container ausgeführt wird). Dies ist der Port, auf den externe Anwendungen oder Dienste zugreifen können, um mit dem Container zu kommunizieren.
  • Container-Port: Der "Container-Port" ist der Port, der im Container selbst geöffnet ist und auf den der Host-Port gemappt wird. Dies ist der Port, den die Anwendungen innerhalb des Containers verwenden, um eingehenden Netzwerkverkehr zu empfangen. Hier können Sie diese Ports eintragen, bspw. für HTTP Port 80.
Mit -v VOLUME:VOLUMEDESTINATION können Sie Ihrem Container ein eigenes Volumen zuweisen.


Für den Container sind die Hostports im Bereich 40000-40100 freigegeben, folglich könnte ein vollständiger Befehl so aussehen:

docker run -d -p 40042:80 -v nextcloud:/var/www/html docker.io/library/nextcloud:latest

Falls Sie möchten, können Sie mit dem Parameter --name dem Container auch einen Namen zuweisen:

docker run -d -p 40042:80 -v nextcloud:/var/www/html --name SupportTest docker.io/library/nextcloud:latest

Alternativ können Sie auch zuerst per

docker create -p HOSTPORT:CONTAINERPORT -v VOLUME:VOLUMEDESTINATION IMAGE:TAG

den Container nur erstellen, falls der Container erst später mit

docker start -a IMAGENAME

gestartet werden soll.

Schritt 5: Prüfen, ob Container angelegt worden ist

Mit dem Befehl

docker ps -a

können Sie einsehen, welche Container bereits angelegt worden sind, und somit prüfen, ob Ihre Container-Installation funktioniert hat.

Schritt 6: Container online bringen

Falls der Container per HTTP (über Port 80) erreicht werden soll, muss der Container im DCP noch mit einer Subdomain verknüpft werden. Hierfür muss unter Domains -> Subdomains -> IhreDomain.tld die gewünschte Subdomain angeklickt, beim Subdomaintyp "Container" (1) und schließlich der richtige Container (2) ausgewählt werden. Klicken Sie nun noch auf "Übernehmen", um die neuen Einstellungen für die Subdomains abzuspeichern (3).

Subdomaincontainereinstlellen.png

Nützliche Befehle

Container oder Image löschen

Container

Um einen Container zu löschen, wird der Befehl

docker rm -f CONTAINERID

verwendet. Die Container-ID können Sie sich mit docker ps -a anzeigen lassen.

Falls gewünscht, kann hier der Parameter -v ergänzt werden, um auch das angebundene Volumen zu löschen. Das sollte aber nur gemacht werden, wenn alle Daten des Containers wirklich gelöscht werden sollen.

Images

Mit dem Befehl

docker rmi -f IMAGEID

können lokale Images gelöscht werden, wenn diese nicht mehr benötigt werden. Die Image IDs können mit docker images angezeigt werden.

Volumes erstellen & löschen

Volumes werden grundsätzlich beim Anlegen von Containern mit dem Parameter -v automatisch erstellt. Man kann diese aber auch mit dem Befehl

docker volume create VOLUMENAME

erstellen.


Hierbei kann auch eine Auflistung aller Volumes mit

docker volume list

hilfreich sein.


Falls ein bestimmtes Volume gelöscht werden soll, sollte der Befehl

docker volume rm VOLUMENAME

genutzt werden.


Um unbenutzte, nicht von irgendeinem Container referenzierte Volumes zu löschen, wird

docker volume prune

verwendet.