Einem Docker-Container per Docker Compose eine feste IP zuweisen

Ich versuche, eine statische IP für meinen Unifi-Container einzurichten, aber das Netzwerk erkennt ihn nicht. Hier sind meine Netzwerkeinstellungen in der Docker Compose:

services:
unifi-os-server:
image: Package unifi-os-server · GitHub
networks:
unifi_network:
ipv4_address: 192.168.0.50
container_name: Unifi-OS-Server
cgroup: host
cap_add:
- NET_RAW
- NET_ADMIN
extra_hosts:
host.docker.internal: host-gateway
.
networks:
unifi_network:
name: Unifi OS Server
driver: bridge
ipam:
config:
- subnet: 192.168.0.0/24
gateway: 192.168.0.1

Virtueller Switch erstellt:

Virtueller Switch:
Container-Netzwerk (br-656dddb1c5d3)
IP-Adresse:
192.168.0.1
Physikalisch:

Virtuell:
Unifi-OS-Server_Virtual Adapter 1
Mitglied:
Container Station

Ich stecke echt fest und bekomme es nicht zum Laufen. Ich weiß nicht, ob das Problem an den Docker Compose Einstellungen liegt oder ob der virtuelle Switch falsch konfiguriert ist. Kann mir hier jemand helfen?

Du musst den Compose-Befehl in vorformatierten Textblöcken einfügen, sonst wird er nicht korrekt gepostet.

Hast du das qnet-Handbuch gesehen?

Danke für den Link. Ich habe die qnet-Treiber für DHCP und Static verloren.

Nach stundenlangem Herumprobieren habe ich es zum Laufen gebracht, indem ich die Netzwerkeinstellungen geändert habe:

driver: macvlan
driver_opts:
parent: eth2

Aus Neugier: Sollte ich stattdessen den qnet-static-Treiber verwenden?

Hallo, @Hypnosis4u2nv Die folgenden Informationen stammen von unserem RD-Team.

Ob du qnet statt macvlan verwenden solltest, hängt von deinen Anforderungen ab.

macvlan ist ausreichend, wenn dein einziges Ziel darin besteht, den Container von anderen Geräten im Netzwerk über eine statische LAN-IP erreichbar zu machen.

Wenn jedoch auch das QNAP-Hostsystem oder andere Container auf demselben NAS mit dem bereitgestellten Container kommunizieren müssen, ist qnet die richtige Wahl — bei macvlan gibt es nämlich die bekannte Einschränkung, dass der Host keine Container auf dem macvlan-Interface erreichen kann.

Eine Schritt-für-Schritt-Anleitung zur Bereitstellung des UniFi-Containers über die Container Station UI findest du in folgendem FAQ: Wie stelle ich die UniFi Network Application per Docker auf dem QNAP NAS bereit? | QNAP

Danke für die Erklärung der Unterschiede zwischen den beiden Treibern. Da ich nur möchte, dass der Unifi OS Server mit den anderen Unifi-Geräten in meinem Netzwerk (inform/adoption) kommuniziert und sonst nichts innerhalb des QNAP-Hosts bzw. der Container benötigt wird, bleibe ich bei der macvlan-Einstellung.

Es ist also nicht schwierig, wenn du das richtige YAML verwendest. Hier ist die vollständige YAML-Datei für meinen Uptime Kuma-Container. Achte besonders auf den Abschnitt „Networks“…

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    container_name: uptime-kuma
    restart: always
    ports:
      - "3001:3001"  # Dieser Eintrag ordnet den Container-Port "3001" dem Host-Port "3001" zu
    volumes:
      - /share/Container/uptime-kuma:/app/data  # Konfiguration für persistente Speicherung
    environment:
      - TZ=America/Chicago  # Setze die Zeitzone (ändere sie nach deinem lokalen Wunsch, damit die Überwachungszeiten stimmen)
      - UMASK=0022  # Setze deine Dateiberechtigungen manuell
    networks:
      kuma-network:
        ipv4_address: 192.168.1.23
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3001"]
      interval: 30s
      retries: 3
      start_period: 10s
      timeout: 5s
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

networks:
  kuma-network:
    driver_opts:
      iface: eth0
    driver: qnet
    ipam:
      driver: qnet
      options:
        iface: eth0
      config:
        - subnet: 192.168.0.0/23
          gateway: 192.168.1.1

Hier gibt es ein bisschen Verwirrung.

Du nutzt eine statische IP von 192.168.1.23, aber dein definiertes Netzwerk-Subnetz ist 192.168.0.0/23?

In meiner Subnetz-Konfiguration ist das CIDR auch als /24 angegeben, im Gegensatz zu dem von dir verwendeten /23. Ich weiß nicht, welche Auswirkung das auf mein Setup mit dem macvlan-Treiber hat, aber in den QNAP-Dokumenten zum qnet-Treiber sehe ich tatsächlich diese /23-Angabe.

192.168.0.0/23 hat eine Subnetzmaske von 255.255.254.0. Damit können IPs von 192.168.0.1 bis 192.168.1.254 verwendet werden.

Nichts “Besonderes” daran. Genau wie ein 10.0.0.0/8 (255.0.0.0) es erlaubt, IPs von 10.0.0.1 bis 10.255.255.254 zu nutzen.

Ich brauchte/wollte einfach ein größeres Netzwerk.

Stelle die Dinge einfach auf die Größe deines Netzwerks ein.

Danke für die Erklärung!