Hoffentlich ist eine dieser Interpretationen richtig.
Kann ich mehrere MySQL-Daemons in verschiedenen Containern ausführen, die sich alle ein einziges Datenvolumen teilen?
Nein, jeder Daemon benötigt ein separates Datenverzeichnis, um Konflikte zu vermeiden. Sie könnten mehrere Datenverzeichnisse auf dem gemeinsam genutzten Volume ablegen, aber das Ergebnis sind mehrere vollständig separate Datenbanken. - Quelle
Kann ich mehrere Container ausführen, die sich verbinden zu einem einzelnen MySQL-Datenbankcontainer?
Ja, es ist möglich, mehreren Containern zu erlauben, sich mit einem einzelnen Datenbankcontainer zu verbinden, aber nicht durch die gemeinsame Nutzung von Volumes. Container Z führt den mysql-Daemon aus und andere Container können sich über TCP-Sockets mit ihm verbinden. Das offizielle MySQL-Repo Readme enthält Schritte zum Einstieg:
Starten Sie zuerst Container Z.
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql
Führen Sie dann andere Container aus, die Sie mit der Datenbank verbinden möchten, etwa so:
docker run --name webservera --link some-mysql:mysql -d application-that-uses-mysql
Docs für den --link
Flagge
. Beim Container-Linking wird ein Hostfile-Eintrag für den Link-Alias hinzugefügt, sodass Sie die Adresse nicht manuell finden müssen. Die Datenbankkonfiguration Ihres Webservers würde in etwa so aussehen
jdbc:mysql://address=(protocol=tcp)(host=mysql)(port=3306)(user=root)(password=mysecretpassword)
Ich hoffe, das hilft.