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