Hallo,
ich habe bisher keine Ahnung von Docker und nur wenig
von virtuellen
Maschinen, ich hätte aber gerne ungefähr das Folgende:
Eine "Wirtsmaschine", z.B. Ubuntu 18.04 auf der ich mehrere
"Container" laufen lasen möchte, in denen jeweils nur Apache2, PHP und
eventuell MySQL laufen. (Ich wär auch von Debian nicht abgeneigt)
Typischerweise betreibt man bei Docker immer nur eine Software / einen
Hauptprozess in einem Container. Also z.B. Apache mit mod_php in einem
Container und MySQL in einem anderen. Der Hauptprozess wird im Vordergrund
gestartet; sobald er sich beendet, beendet sich auch der Container.
Es gehen theoretisch auch mehrere Prozesse pro Container, aber das macht
die Sache komplexer und entspricht nicht der Intention von Docker.
Man kann Anwendungscontainer miteinander koppeln, indem man sie in einem
eigenen (benutzerdefinierten) Netzwerksegment laufen lässt und Zugangsdaten
über Environment-Variablen oder Shared Volumes austauscht.
https://docs.docker.com/network/bridge/
Ein pragmatischer Ansatz wäre, eine einzelne MySQL Instanz zu verwenden
(entweder in einem eigenen Container oder direkt auf dem Ubuntu Host) und
den verschiedenen Web-Anwendungen einfach neue Schemata, User und Passwörter
einzurichten.
Die Container kann man auf Grundlage des präferierten Basis-Image (z.B.
Debian) selber mit einem Dockerfile bauen. Oder man verwendet vorgefertigte
Images aus dem Docker Hub, z.B.
https://hub.docker.com/_/php/
https://hub.docker.com/_/mysql/
Hintergrund: Ich möchte mehrere Apaches mit
verschiedenen Modulen /
PHP-Versionen nebenher testen können. VM ist also nicht nötig denke
ich mal.
Richtig, sowas geht gut mit Docker i.d.R. schneller und einfacher als mit
virtuellen Maschinen.
Ich stell mir das so vor daß sich jede Instanz per
DHCP eine eigene
IP-Adresse aus meinem Router holt. Liege ich da falsch?
Docker Container verwenden kein DHCP, sondern die Docker Engine teilt die
IP-Adresse beim Start zu. Wenn der Container von außen erreichbar sein soll,
kannst du Port Forwarding verwenden.
Gruß, Harald