Container

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen

Ü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

OnlyOffice Documentserver

TODO siehe https://codeberg.org/tpokorra/hs.compose/src/branch/main/onlyoffice-document_server