Docker Compose - MAC/IP-Adresse etc. mitgeben

H3llF15H

Admiral
Registriert
Juni 2009
Beiträge
7.644
Hallo allerseits!

Seit geraumer Zeit verwende ich auf meinem QNAP die Container Station. Die unterschiedlichen Anwendungen werden mittels yml-Datei erstellt. Folgend ein exemplarisches Beispiel meiner Konfiguration für den Nginx Proxy Manager (NPM):

Code:
version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - /share/ZFS24_DATA/Docker/Nginx_Proxy/data:/data
      - /share/ZFS24_DATA/Docker/Nginx_Proxy/letsencrypt:/etc/letsencrypt


Mein Anliegen ist es nun, diesem Container und jedes Mal wenn ich ihn (wegen einer neuen Version / Image) neu erstelle, folgende Informationen mitzugeben:
  • Hostname
  • MAC-Adresse
  • und oder gleich auch die IP-Adresse

Momentan ist es so, dass meine Fritz!Box nach dem erneuten Erstellen des Containers diesem eine andere IP und MAc-Adresse zuweist, sodass ich tätig werden muss - vor allem wenn ich AdGuard Home aktualisiere, da andernfalls die DNS-Anfragen auf einer nicht mehr vorhandenen IP ins Leere laufen.

Kurz um: welche Infos muss ich eintragen, dass die Fritz!Box neue Container in Zukunft immer mit der gleichen IP versieht und den Hostname übernimmt?

Vorab vielen Dank an alle die Unterstützung leisten.

Schöne Grüße

Sebastian
 
Ich bin etwas verwirrt. So wie du die Ports bindest sollte es am Ende an alle Interfaces des Hosts gebindet sein und somit dessen IP-Adresse nutzen. Oder macht QNAP hier nochwas komisches und hat Docker in eienr VM mit Bridged Adapter laufen?
 
  • Gefällt mir
Reaktionen: Asghan und H3llF15H
Bin auch überrascht, eigentlich müsste der Container unter derselben IP erreichbar sein, wie der Host/Qnap.

/Edit: Wenn man eine feste/andere IP für einen Container vergeben will, braucht man glaube ich macvlan?
 
  • Gefällt mir
Reaktionen: H3llF15H
Ich habe mehrere Docker Container auf einer VM am Laufen und alle sind unter der IP/Hostnamen der VM erreichbar. Somit haben die Container immer die gleiche IP. Halt nur jeweils andere Portnummer.
 
  • Gefällt mir
Reaktionen: H3llF15H
Vielen Dank für eure Rückmeldungen :)

Vorab: ich bin in der Thematik noch nicht ganz so firm, möchte das aber gerne ändern.

QNAP vergibt nach dem Erstellen des Containers eine 172.x.x.x IP, mit der ich erstmal nichts anfangen kann (möglicherweise ein Layer-8-Problem). Wenn der Container nun erstellt wurde gehe ich her und ändere die IP auf meine Gewünschte ab, siehe Screenshot. Mein NAS hat die IP 10.20.18.40, das kurz am Rande.
 

Anhänge

  • Screenshot 2024-08-22 112015.png
    Screenshot 2024-08-22 112015.png
    153,3 KB · Aufrufe: 66
Laut Doku kann man networks.mac_address dafür verwenden.

Code:
services:
  my_service:
    image: my_image
    networks:
      my_network:
        mac_address: "02:42:ac:11:00:02"

Das soll angeblich auch gehen:
Code:
services:
  my_service:
    image: my_image
    networks:
      my_network:
        mac_address: "02-42-ac-11-00-02"

Ich habe es nicht getestet. Eventuell passt die Syntax nicht ganz.
 
  • Gefällt mir
Reaktionen: H3llF15H
H3llF15H schrieb:
QNAP vergibt nach dem Erstellen des Containers eine 172.x.x.x IP,
Die 172er IP ist eine interne Docker IP für das interne Docker Network.

Was du schauen musst, ist wie du die QNAP dazu bringst, es an das Interface des NAS zu binden. Versuche es mal explizit mit "0.0.0.0", also z.B. "0.0.0.0:80:80" in den Port-mappings. Problem wird nur sein, dass Port 80 vermutlich die Weboberfläche des NAS selbst belegt, du musst hier also vermutlich einen anderen Port wählen.
 
  • Gefällt mir
Reaktionen: dasBaum_CH und H3llF15H
Krik schrieb:
Laut Doku kann man networks.mac_address dafür verwenden.
Super, danke. Werde ich mir gleich ansehen.

@NJay
Auch dir danke :) Auch das werde ich mir ansehen und überdenken. Virtuelle Switche etc. hängen da auch mit dran, so wie ich das sehe.

Dann habe ich erstmal was zu tun :D
 
NJay schrieb:
Problem wird nur sein, dass Port 80 vermutlich die Weboberfläche des NAS selbst belegt, du musst hier also vermutlich einen anderen Port wählen.
Das auf jeden Fall.
In dem Fall gehört 80 dem Host, der Container braucht zwingend einen anderen Port.
 
Ich habe es bei mir so gelöst, dass die einzelnen Container im selben Docker Network liegen. Dann kann man die einzelnen Container direkt mit dem im Docker-Compose gewählten service-Namen als Hostnamen in nginx referenzieren (z.B. https://portainer:9443, wenn ein service 'portainer' heißt). Dann muss man auch nicht mehr die Ports an den Docker host weitergeben.
 
Zurück
Oben