Container
Übersicht
Es gibt die Möglichkeit, einen Container Server mit Docker oder mit Podman zu buchen.
Dies ist eine Managed Umgebung, also ohne Root-Rechte, wo Docker bzw. Podman rootless ausgeführt werden.
Falls vom Installationsskript einer Anwendung Root-Rechte erforderlich sind, kann entweder versucht werden, dies anzupassen, oder es kann ein Cloud Server gebucht werden, wo der Benutzer Root-Rechte hat.
Erste Schritte
Bei der Bestellung des Container Servers sollte direkt der Public SSH Key mitgegeben werden, am besten bereits nach dem Ed25519-Standard, siehe auch [1].
Der Zugriff erfolgt über den Benutzer tallyman über SSH auf den Container Server.
ssh tallyman@vm4xxx.hostsharing.net
Um einen "Hello World" Docker Container zu starten:
tallyman@vm4xxx:~$ docker run hello-world
Entsprechend sieht der Befehl für Podman aus:
tallyman@vm4xxx:~$ podman run hello-world
Hilfreiche Befehle für Docker
# in einem Ordner ausführen, wo eine Datei mit dem Namen docker-compose.yml liegt, um die Umgebung zu bauen und zu starten:
docker compose up --detach
# zeige alle laufenden Container
docker ps -a
# zeige die Logs eines Containers
docker logs mein-container
# wechsle in eine Shell im Container
docker exec -t -i mein-container /bin/sh
# Images aktualisieren
docker compose pull
# Containerumgebung stoppen und löschen
docker compose down
Hilfreiche Befehle für Podman
TODO
Integration in Hostsharing Managed Platform
Subdomain einrichten
Wir haben bereits die Hauptdomain bei Hostsharing gebucht.
Nun soll unsere Anwendung auf dem Container Server auf einer Subdomain laufen.
Wir benutzen einen Caddy Container, um Letsencrypt bereitszustellen (siehe in den Beispielen unten).
Auf der Managed Umgebung müssen wir das Zonefile anpassen, um die Subdomain per A und AAAA Eintrag auf den Container Server zu verweisen.
Mit dem Befehl dig ermitteln wir die ipv4 und ipv6 Adressen unseres Container Servers:
dig -t A +short vm4xxx.hostsharing.net
dig -t AAAA +short vm4xxx.hostsharing.net
Auf der Managed Umgebung, legen wir ein Zonefile an. Siehe auch die Anleitung im Handbuch: https://www.hostsharing.net/doc/managed-operations-platform/zonefile/
doms/meinedomain.de/etc/pri.meinedomain.de:
{DEFAULT_ZONEFILE}
meinesubdomain IN A 83.223.xx.xxx
meinesubdomain IN AAAA 2a01:xx:xxxx::xxxx:xxxx:0
Tunnel zur Managed Datenbank einrichten
Wir lassen die Anwendung auf dem Container Server laufen. Dort kann natürlich auch die Datenbank laufen, in einem eigenen Container.
Wir haben aber auch Datenbanken in der Managed Umgebung von Hostsharing, mit allen Vorteilen (regelmäßiges Backup, usw.).
Wenn wir eine managed Datenbank aus der Managed Umgebung auf dem Container Server einbinden wollen, sind folgende Schritte notwendig:
- TODO Es muss ein Tunnel eingerichtet werden, damit die Datenbank vom Container Server aus erreichbar ist.
- TODO: Anpassungen an Docker Compose. Beispiel
Docker fernsteuern
Es besteht die Möglichkeit, über SSH den Docker Socket von außen zu erreichen. Damit wird es möglich, über eine IDE wie z.B. Intellij IDEA die Docker Container zu starten und zu stoppen.
Um das auszuprobieren, können diese Befehle ausgeführt werden:
ssh -nNT -L $(pwd)/docker.sock:/var/run/docker.sock tallyman@vmxxxx.hostsharing.net
export DOCKER_HOST=unix://$(pwd)/docker.sock
docker ps -a
Nun sollten die aktuell laufenden Container gelistet werden.
Beispiel Anwendungen
Container Umgebung mit Nginx und Certbot
TODO siehe https://codeberg.org/tpokorra/hs.compose/src/branch/main/nginx-certbot
Container Umgebung mit Caddy und Python Anwendung
TODO siehe https://codeberg.org/tpokorra/hs.compose/src/branch/main/caddy-test
Nextcloud High Performance Backend mit Caddy
- Docker Compose: siehe https://codeberg.org/tpokorra/hs.compose/src/branch/main/nextcloud-high_performance_backend
- Siehe auch dort die README Datei, was für die Einrichtung erforderlich ist.
OnlyOffice Documentserver
TODO siehe https://codeberg.org/tpokorra/hs.compose/src/branch/main/onlyoffice-document_server