Einrichten eines Docker-Containers für die Arbeit mit einer lokalen Datenbank

Einrichten eines Docker-Containers für die Arbeit mit einer lokalen Datenbank

Ich versuche, einen Docker-Container für die Arbeit mit einer lokalen Datenbank einzurichten.

Das Bild ist dieseshttps://hub.docker.com/r/tuxgasy/dolibarr/und es wird vorgeschlagen, auch einen mariadbContainer zu erstellen und ihn damit zu verknüpfen.

Ich möchte den Dolibarr-Container so konfigurieren, dass er stattdessen die mariadbDatenbank verwendet, die ich bereits auf meinem Hauptsystem habe und die aus dem Haupt-Repo meiner Distribution installiert wurde.

Dies ist das erste Mal, dass ich versuche, eine funktionierende Docker-Anwendung einzurichten, und ich bin kein großer Experte in Sachen Datenbankwartung, daher bin ich etwas ratlos.

Wie kann ich das machen? Bitte halten Sie die Anweisungen so klar und detailliert wie möglich.

Mein System ist ein vollständig aktualisiertes openSUSE Tumbleweed.

Antwort1

Es gibt drei Möglichkeiten:

  1. Verwenden Sie die Option --net=host. Dieser Netzwerkmodus bedeutet im Wesentlichen, dass der Container direkten Zugriff auf localhost hat und Sie nun auf localhost:3306 zugreifen können. Hier ist der Befehl

    docker run --net=host ... tuxgasy/dolibarr

    Verbinden Sie sich dann mit MariaDB mitlocalhost:3306

  2. Hängen Sie den MariaDB-Socket in den Docker-Container ein und stellen Sie über den Socket eine Verbindung zu MariaDB her. Wenn Sie beispielsweise den Speicherort des Sockets auf /var/run/mysqld/mysqld.sock konfigurieren, können Sie diesen als Verbindungspunkt einhängen und verwenden.

    docker run -v /var/run/mysqld:/mariadb_socket ... tuxgasy/dolibarr

    Stellen Sie dann über den Socket /mariadb_socket/mysqld.sockIhrer App eine Verbindung zu MariaDB her

  3. Verwenden Sie die IP des Docker-Hosts. Holen Sie sich zunächst die Host-IP-Adresse im Docker-Netzwerk (in Linux geben Sie ein ip addr showund suchen Sie nach demdocker0 ip). Das ist normalerweise so etwas wie172.17.0.1(Ihre Erfahrung kann variieren). Dann sollten Sie in der Lage sein, diese IP-Adresse zu verwenden, um beispielsweise eine Verbindung zu MariaDB herzustellen172.17.0.1:3306

NOTIZ:... bedeutet alle anderen Optionen, die Sie möglicherweise bereits verwenden

Antwort2

Ab Docker v18.03+ können Sie diehost.docker.internalHostname für die Verbindung mit Ihrem Docker-Host.

Dies dient Entwicklungszwecken und funktioniert nicht in einer Produktionsumgebung außerhalb von Docker Desktop.

Verknüpfung

Antwort3

Ich habe einen Docker-Container erstellt, um genau das zu tunhttps://github.com/qoomon/docker-host

Sie können dann einfach den Containernamen DNS verwenden, um von innerhalb eines Containers auf das Hostsystem zuzugreifen, z. B. curlhttp://dockerhost:9200

Antwort4

Bedenken Sie, dass qoomon/docker-host nicht besser ist als jede andere Methode. Sie müssen Ihre Anwendung auf dem Docker-Host so konfigurieren, dass sie an die Docker-Bridge gebunden ist und auf sie hört, bevor sie zugänglich ist. Meiner Meinung nach fügt qoomon/docker-host dem Netzwerkpaket nur eine zusätzliche Schicht hinzu, die keinen wirklichen Vorteil bietet.

Dies ist die Kopie der README-Datei für qoomon/docker-host, die anscheinend übersehen wird. „Auf Linux-Systemen müssen Sie Ihre Host-Anwendungen zusätzlich zu localhost(127.0.0.1) an das Bridge Network Gateway binden, wenn Sie sie über den Docker-Host-Container erreichen möchten. Verwenden Sie den folgenden Docker-Befehl, um die IP-Adresse des Bridge Network Gateway abzurufen.“

verwandte Informationen