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
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.
- 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.
- 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 man den Container per HTTP (über Port 80) erreichen möchte, muss man den Container im DCP noch mit einer Subdomain verknüpfen. Hierfür muss unter Domains -> Subdomains -> IhreDomain.tld die gewünschte Subdomain angeklickt und beim Subdomaintyp "Container" (1) und schließlich der richtige Container (2) ausgewählt werden.
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.
- Falls gewünscht, kann hier der Parameter
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.