Docker-Container können nicht auf lokale MariaDB zugreifen (Timeout)

MattCB

Benutzer
Mitglied seit
31. Jan 2012
Beiträge
369
Punkte für Reaktionen
65
Punkte
28
So, habe jetzt mal ein neues Bridge Netzwerk über die Docker-GUI erzeugt. Beide Container (MariaDB und Baikal) in dieses Bridge Netzwerk gepackt. Dabei dem MariaDB-Container über Environment Variablen gleich die Datenbank und den Nutzer für Baikal erzeugen lassen. Baikal aufgerufen und als Adresse den Containername der MariaDB (mariaDB) angegeben. Voila: es funktioniert. Darauf kann man aufbauen, denke ich.

Packe ich noch einen PHPMyAdmin Container in das gleiche Netzwerk, kann ich sogar damit auf die Datenbank zugreifen (ebenfalls über den Containernamen mariadb). Setze ich den PHPMyAdmin-Container in das Standard-Bridge-Netzwerk, komme ich nicht auf die Datenbank.

Ich könnte also alles in einem selbst erstellten Bridge-Netzwerk laufen lassen. Dann können die Container untereinander kommunizieren und sind trotzdem nach außen abgekapselt.

Ich hatte mal irgendwo aufgeschnappt, dass das Standard-Bridge-Netzwerk keine interne DNS-Auflösung kann, weshalb man da noch mit Container-Verlinkung arbeiten muss, was aber veraltet sei.

Da es mit dem neu erstellten Netzwerk aber per Containernamen arbeiten kann, scheint ja da die DNS-Auflösung zu funktionieren.
 
  • Like
Reaktionen: EDvonSchleck

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.114
Punkte
214
Schön das es funktioniert, ich hätte trotzdem gerne die Ursache für das Synology-MariaDB-Paket gehabt.
Wenn es innerhalb von Docker läuft, scheint es ein Problem mit der Verbindung ins Host-Netzwerk zu geben. Für mich wäre es immer noch die Firewall oder nutzt du AdGuard, Pi-Hole oder ähnliches auch noch?

Aktiviere bitte noch einmal die Firewall und zeige deine getätigten Einträge.
Stelle deine Firewall so ein. Den 3. Eintrag kannst du ignorieren. Ich würde gerne wissen, ob mit den Einstellungen eventuell ein Fehler beseitigt wird.
 
Zuletzt bearbeitet:

MattCB

Benutzer
Mitglied seit
31. Jan 2012
Beiträge
369
Punkte für Reaktionen
65
Punkte
28
PIhole läuft noch als Docker (im Hostnetzwerk). Allerdings nutz die Synology den Pihole nicht, da habe ich als DNS direkt die Fritzbox angegeben. Kann mir nicht vorstellen, dass es daran liegt, da ich ja direkt über die IP gehe, da sollte ja der Pihole außen vor sein.

Durch dieses ganze Experimentieren habe ich wieder etwas mehr zum Thema Docker gelernt. ;)
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.114
Punkte
214
Und die Fritz!Box hat den DNS vom Pi-Hole? Somit hast du doch einen Loop. So etwas würde ich beim Testen immer deaktivieren oder am besten für den Zeitraum ausschalten. Ob du die Einträge für die Fritz!Box (im Pi-Hole) richtig gesetzt hast, kann auch nicht ausgeschlossen werden. Ich verwende AdGuard (bessere Pi-Hole) mit Unbound und habe keine Probleme.
 

MattCB

Benutzer
Mitglied seit
31. Jan 2012
Beiträge
369
Punkte für Reaktionen
65
Punkte
28
Die Fritzbox verteilt die IP des Pihole nur per DHCP im Netzwerk. Also bekommen nur die DHCP-Clienten den Pihole. So kann ich immer noch Geräte ohne Umwege über den Pihole betreiben, indem ich dort die Fritzbox als DNS-Server angebe.

Adguard hatte ich auch schon mal getestet, aber ich finde bei Pihole besser, dass man die Blockierfunktion für eine bestimmte Zeit deaktivieren kann, falls es mal notwendig sein sollte. Sie wird dann automatisch wieder aktiviert, wenn die Zeit abgelaufen ist. Bei Adguard kann man den Schutz nur komplett aus- und einschalten. Ich habe den schon mal ausgeschaltet und vergessen, wieder einzuschalten. Und mich dann gewundert, warum ich plötzlich wieder Werbungen eingeblendet bekomme... ;-)
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.114
Punkte
214
Wenn alles richtig eingestellt ist, wie du sagst, kannst du die in der Fritz!Box hinterlegten Client-Namen aufrufen? Wenn es ordentlich eingerichtet wurde, muss man nichts deaktivieren.

Hast du die Firewall trotzdem wie in #42 testweise eingerichtet?
 

MattCB

Benutzer
Mitglied seit
31. Jan 2012
Beiträge
369
Punkte für Reaktionen
65
Punkte
28
Ja, ich erreiche die Clienten über ihre Namen problemlos. Meine Speedhome-Wifi (Mesh-Basis) z.B. erreiche im Browser über https://speedhomewifi, also so wie sie in der Fritzbox aufgelistet ist.

Ich versuche das mit der Firewall bei Gelegenheit mal. Aber so wie es aussieht, funktioniert beim standardmäßig eingerichteten Bridge-Netzwerk die DNS-Auflösung innerhalb des Netzwerkes nicht. Mit einem eigens angelegten hingegen schon. Das reicht mir ja erstmal. Zumal man auch nachträglich Container in das neue Netzwerk umziehen kann. Und das sogar über die Synology-eigene GUI. :cool:

Ich deaktiviere ab und an mal den Pihole, wenn ich eine Seite aufrufen möchte, die geblockt ist. Oft verlinkt zum Beispiel MyDealz Seiten über geblockte URLs. Und da ich die Seite trotzdem aufrufen möchte, deaktiviere ich Pihole für 30 Sekunden und kann dann die Seite aufrufen. Nach 30 Sekunden ist Pihole wieder automatisch aktiv. Aber das geht jetzt ins Offtopic. :)
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.114
Punkte
214
Was hat die DNS mit der IP zu tun? Du hast ja auch die IP der DS eingegeben. Das localhost und der Containername nur innerhalb von Docker funktionieren, sollte klar sein. Eine Verbindung zum Host-Netzwerk ist nicht vorgesehen. Das kann man aber ändern, indem man den Container im Host-Netzwerk laufen lässt.

Ich denke immer noch das etwas blockiert, deshalb das Probieren mit der Webstation-Version, dort müsste MariaDB angenommen werden, da es direkt im Host läuft.
 
  • Like
Reaktionen: MattCB

MattCB

Benutzer
Mitglied seit
31. Jan 2012
Beiträge
369
Punkte für Reaktionen
65
Punkte
28
Probier ich bei Gelegeheit mal aus.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Ich hatte mal irgendwo aufgeschnappt, dass das Standard-Bridge-Netzwerk keine interne DNS-Auflösung kann, weshalb man da noch mit Container-Verlinkung arbeiten muss, was aber veraltet sei.
Im Default Bridge-Netzwerk kann Docker kein dns-basiertes Service Discovery, aber in jedem selbst erstellten Bridge-Netzwerk funktioniert es.

Oder war die Aussage, dass Service Disovery bei dir auch mit Default Bridge-Netzwerk funktioniert?
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.114
Punkte
214
Hat aber doch nichts mit der IP zu tun, welche ja auch nicht angenommen wurde.
 

MattCB

Benutzer
Mitglied seit
31. Jan 2012
Beiträge
369
Punkte für Reaktionen
65
Punkte
28
Im Default Bridge-Netzwerk kann Docker kein dns-basiertes Service Discovery, aber in jedem selbst erstellten Bridge-Netzwerk funktioniert es.

Oder war die Aussage, dass Service Disovery bei dir auch mit Default Bridge-Netzwerk funktioniert?

Nein, das funktioniert nur mit einem selbst erstellten Bridge-Netzwerk. Das hatte ich im ct Sonderheft zum Thema Docker gelesen. Dort wurde davon abgeraten, Container mit der alten Methode zu verlinken, sondern eher auf Service Discovery per DNS zu setzen.
 

MattCB

Benutzer
Mitglied seit
31. Jan 2012
Beiträge
369
Punkte für Reaktionen
65
Punkte
28
Zwischeninfo: Baikal per Webserver installiert, Zugriff auf die lokale MariaDB funktioniert damit problemlos. Ist also tatsächlich ein Problem von Docker, dass man nicht auf die MariaDB zugreifen kann.

Welche Erweiterungen werden bei PHP 8 eigentlich benötigt? Ich habe einfach mal alle aktiviert. :)
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Nein, das funktioniert nur mit einem selbst erstellten Bridge-Netzwerk. Das hatte ich im ct Sonderheft zum Thema Docker gelesen. Dort wurde davon abgeraten, Container mit der alten Methode zu verlinken, sondern eher auf Service Discovery per DNS zu setzen.
Hätte mich jetzt auch stark gewundert. Container zu verlinken gilt schon länger als deprecated . Es ist nur eine Frage der Zeit bis die Funktion aus der Docker Engine ausgebaut wird.
 
  • Like
Reaktionen: MattCB

MattCB

Benutzer
Mitglied seit
31. Jan 2012
Beiträge
369
Punkte für Reaktionen
65
Punkte
28
Ich habe die FW mal so wie unten eingestellt. Die beiden 172er Bereiche habe ich, weil das Standard-Bridge Netzwerk die 172.17.x.x und das selbst erstellte Bridge Netzwerk die 172.20.x.x hat.

Aber sollte die IP-Adresse nicht das gesamte Netzwerk sein, also z.B. die 192.168.2.0 statt der 192.168.2.1?

Leider funktioniert auch mit diesen Firewall-Einstellungen der Zugriff von Docker-Containern auf die lokale MariaDB nicht.

Ich packe jetzt erstmal alles, was miteinander kommunizieren soll, in ein neu erstelltes Bridge-Netzwerk. Bei Gelegenheit mache ich trotzdem mal ein Ticket bei Synology auf.

Danke erst mal für die ganze Tipps. Habe doch einiges über Docker gelernt.


1669325183856.png
 

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.114
Punkte
214
Das von Docker standardmäßige Bridge-Netzwerk(e) geht von 178.16.0.0 bis 17.31.255.255, was einem Subnet von 255.240.0.0 entspricht. Wenn du es also einrichtest, wie in Zeile 2 sind alle Bridge-Netzwerke in Docker eingefasst.

1669325980510.png
 
  • Like
Reaktionen: MattCB

MattCB

Benutzer
Mitglied seit
31. Jan 2012
Beiträge
369
Punkte für Reaktionen
65
Punkte
28
Alles klar. Danke erstmal. So fit bin ich noch nicht in Netzwerktheorie, aber es leuchtet mir ein. (y)
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat