Docker meldet Port Konflikt, trotz eigener IP per MACVLAN

vater

Benutzer
Contributor
Mitglied seit
14. Mrz 2014
Beiträge
487
Punkte für Reaktionen
107
Punkte
43
Ich wollte heute "mal eben" einen LANCACHE unter Docker installieren. Hier geht's jetzt aber nur um Docker, es könnte jeder Container sein.

Diese Fehlermeldung verhindert, dass der gewünschte Container mit den hier gelisteten Ports eingerichtet werden kann:
1722714477976.png
Fehler: Lokaler Port 443, 80, 8080 steht im Konflikt mit anderen Ports und anderen Diensten.

Klar werde Ihr sagen, 443 und 80 werden ja auch von DSM und div. Paketen genutzt. Richtig. DriveServer hatte ich z.B. manuell abgeschaltet. Aber da es nicht geholfen hat, habe ich, um sicherzugehen, die betroffenen Services , wie hier beschrieben von 443 auf 444 geändert. Unten der "Beweis", dass nun 444 und 81 genutzt werden:
Bash:
sed -i -e 's/80/81/' -e 's/443/444/' /usr/syno/share/nginx/server.mustache /usr/syno/share/nginx/DSM.mustache /usr/syno/share/nginx/WWWService.mustache
synoservicecfg --restart nginx

:~$ sudo netstat -tulpn | grep LISTEN | grep :80
:~$ sudo netstat -tulpn | grep LISTEN | grep :443

:~$ sudo netstat -tulpn | grep LISTEN | grep :444
tcp        0      0 0.0.0.0:444             0.0.0.0:*               LISTEN      13427/nginx: worker
:~$ sudo netstat -tulpn | grep LISTEN | grep :81
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      13427/nginx: worker


Aber Vater, da gibt es doch dieses Services Verzeichnis..
Leider auch ohne 80 und 443 Beteiligung
Code:
:~$ sudo tail /usr/local/etc/services.d/* | grep /tcp
tail: error reading '/usr/local/etc/services.d/tmp': Is a directory
dst.ports="6011:6030/tcp"
dst.ports="4662/tcp"
dst.ports="26500:27000/tcp"
dst.ports="6281/tcp"
dst.ports="50001,50002/tcp"
dst.ports="5566/tcp"
dst.ports="3264/tcp"
dst.ports="3265/tcp"
dst.ports="554/tcp"
dst.ports="6690/tcp"
dst.ports="9025:9040/tcp"
dst.ports="2379:2382,2385,16509,16514,30200:30299,30300/tcp"
dst.ports="21117/tcp"
dst.ports="21118,21116,21115/tcp"
dst.ports="8123/tcp"

Das Gemeine ist eigentlich, dass ich ohnehin MACVLAN mit einer "eigenen" IP verwende und daher dem DSM total egal sein könnte, wenn auf "seiner" IP die Ports genutzt werden. Aber da MACVLAN von DSM nicht so richtig unterstützt wird, werfe ich das dem System ja gar nicht vor. Diese Meldung hat sicher schon so manchen Bastler vor Schlimmerem bewahrt.

1722715227275.png
Das mit dem MACVLAN hatte ich hier gemoppst.
Bash:
sudo docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=IP-AdresseDesROUTERS --ip-range=192.168.0.32/27 -o parent=NAMEDERSYNOLOGYNETZWERKSCHNITTSTELLE direktLan


Dann hatte ich die Idee, das .json herunterzuladen, dort die Ports einzutragen und das Ganze zu importieren:
1722715696561.png

Leider ohne Erfolg:
1722715759705.png


Ändere ich im Übrigen nur 8080, geht das durch:
1722715800627.png

Trage ich 80 und 443 oder auch nur einen der beiden Ports zusätzlich fest ein, wird in der jeweiligen Fehlermeldung auch immer 8080 mit angemahnt:
1722715897822.png

Edit weitere erfolglose Lösungsversuche:
- Neustart Docker/Container Manager
- Neustart der gesamten DS

Hat jemand eine Idee, wogegen diese Eingabemaske prüft und ob ich darauf Einfluss nehmen , oder wie ich die Port Config des Containers, auf anderem Wege anpassen kann?
Oder mach ich insgesamt etwas falsch? Oder habe ich einen Denkfehler?

Vielen Dank fürs drüberschaun.

Vater
 
Zuletzt bearbeitet:

its

Benutzer
Mitglied seit
27. Aug 2016
Beiträge
177
Punkte für Reaktionen
63
Punkte
78
Ich denke mal es liegt - wie du schon selbst vermutest - daran, das MCAVLAN nicht direkt vom Container-Manager unterstützt wird. Versuche es doch mal mit docker-compose. Du erstellt im Container-Manager ein Projekt und bindest dann einfach die docker-compose.yaml ein. In dieser Datei kannst du dann auch direkt festlegen, welche IP von dem MACVLAN genommen werden soll. So funktioniert es bei mir tadellos mit mehreren Containern und da alle composer-files im jeweiligen Dockerverzeichnis gespeichert sind, habe ich auch gleich ein komplettes Backup meiner Container!
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Port-Mappings können technisch NUR für Bridge und Overlay Netzwerke funktionieren (und ergibt auch nur dort Sinn).

Der Service muss über "{container macvlan ip}:{container port}" angesprochen werden. Da kann es in der Tat keine Kollisionen geben.

Es hängt vom eingesetzten Image ab, ob der Service im Container auf einen anderen Port gebunden werden kann, und wie es zu machen ist. Meistens findet man dazu entsprechende Angeben in der Dockerhub Beschreibung des Images.
 
  • Like
Reaktionen: vater und Benie

crammaster

Benutzer
Mitglied seit
14. Jul 2024
Beiträge
187
Punkte für Reaktionen
42
Punkte
28
Moin,

installier Portainer, der ist besser davon zu überzeugen. xD Habe ich bei mir auch so gemacht.

AdGuard göhnt sich Port 53 und NGINX Proxy Manager Port 80 und 443, nur um mal ein paar Beispiele zu nennen.
 
  • Like
Reaktionen: vater

vater

Benutzer
Contributor
Mitglied seit
14. Mrz 2014
Beiträge
487
Punkte für Reaktionen
107
Punkte
43
Ich habe den Container nun über ein Projekt erstellt und gestartet. Das hat geholfen. Vielen Dank für Eure Ideen.

YAML:
services:
    monolithic:
        restart: unless-stopped
        container_name: lancache
        volumes:
            - /volume4/DockerSilver/LCMonolith/cache:/data/cache
            - /volume4/DockerSilver/LCMonolith/logs:/data/logs
        network_mode: 'Net'
        environment:
            - CACHE_MEM_SIZE=400m
            - CACHE_DISK_SIZE=750g
            - CACHE_MAX_AGE=3560d
            - TZ=Europe/Berlin
            - UPSTREAM_DNS=192.168.xxx.11 192.168.xxx.11
        image: lancachenet/monolithic:latest

Wie wäre jetzt der Syntax, um eine feste IP zu vergeben? Ich hatte mehrere Varianten, aber leider ohne Erfolg. Er lief beim erstellen immer in einen Fehler.
 

power_nas

Benutzer
Mitglied seit
23. Jul 2024
Beiträge
16
Punkte für Reaktionen
2
Punkte
3
Dazu musst du das Netzwerk angeben, dort kannst du dann die IP-Adresse festlegen. Beispiel:
networks:
lancache_macvlan:
ipv4_address: 192.168.178.130 (hier eine gültige IP aus deinem MacVlan eintragen)


Als Ergänzung zu Portainer würde ich noch Dockge empfehlen, damit ist deutlich einfacheres Erstellen und Anpassen von Stacks möglich.
 

its

Benutzer
Mitglied seit
27. Aug 2016
Beiträge
177
Punkte für Reaktionen
63
Punkte
78
Versuche es mal damit:
monolithic:
restart: unless-stopped
container_name: lancache
volumes:
- /volume4/DockerSilver/LCMonolith/cache:/data/cache
- /volume4/DockerSilver/LCMonolith/logs:/data/logs
environment:
- CACHE_MEM_SIZE=400m
- CACHE_DISK_SIZE=750g
- CACHE_MAX_AGE=3560d
- TZ=Europe/Berlin
- UPSTREAM_DNS=192.168.xxx.11 192.168.xxx.11
image: lancachenet/monolithic:latest
networks:
macvlan-net:
ipv4_address: 192.168.xxx.xxx
networks:
macvlan-net:
external: true

macvlan-net = der Name deines MACVLAN
192.168.xxx.xxx = eine IP aus deinem MCVLAN
 

Anhänge

  • IMG_0074.jpeg
    IMG_0074.jpeg
    59,3 KB · Aufrufe: 2
  • Like
Reaktionen: vater

power_nas

Benutzer
Mitglied seit
23. Jul 2024
Beiträge
16
Punkte für Reaktionen
2
Punkte
3
Ansonsten wäre noch die Frage interessant, warum du das mit einem MACVLAN machst. Aus meiner Erfahrung schafft man sich mit MACVLAN mehr Probleme als man damit löst. Wenn der Container nicht unbedingt im MACVLAN laufen muss, tut's network_mode: bridge auch.
 

vater

Benutzer
Contributor
Mitglied seit
14. Mrz 2014
Beiträge
487
Punkte für Reaktionen
107
Punkte
43
@its: Probiere ich gleich morgen. :)

Bridge lief bei mir einfach nicht. Wie oben beschrieben, hat der Container Manager das verhindert.
Ich versuche das Ganze möglichst mit den Synology Bordmitteln zu erledigen. Daher auch erstmal weiterhin ohne Portainer.
 
  • Like
Reaktionen: its

vater

Benutzer
Contributor
Mitglied seit
14. Mrz 2014
Beiträge
487
Punkte für Reaktionen
107
Punkte
43
Ich habe das für heute erstmal abgebrochen. Er war nicht gewillt, eine IP fest zu vergeben. Entweder der Container konnte nicht starten oder wenn er dann gestartet ist, ging er wieder aus. Im Log stand dann, dass keine IP gebunden werden konnte. Ich muss das mal auf meinen nächsten Urlaub verschieben.
 

crammaster

Benutzer
Mitglied seit
14. Jul 2024
Beiträge
187
Punkte für Reaktionen
42
Punkte
28
Du wirst wahrscheinlich nicht drum herum kommen Portainer zu installieren.

Hatte auch Probleme damit, Container Manager davon zu überzeugen, eine extra IP Adresse zu verwenden und wenn, dann wollte er den schon belegten Port nicht benutzen (z.B. 80).

Portainer hat es dann gelöst.
 


 

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