Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Docker
    5. Docker Compose, 2 Container im selben Netzwerk

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Docker Compose, 2 Container im selben Netzwerk

    This topic has been deleted. Only users with topic management privileges can see it.
    • W
      wusa last edited by

      Hallo zusammen,

      ich schaffe es leider nicht, 2 Docker Container im selben Netzwerk anzulegen.

      Wie folgt bin ich vorgegangen:
      Ich hab ein Netzwerk angelegt mit dem Namen docker-lan
      73003438-8253-4dc8-bb32-b124ee1a4f50-grafik.png

      Diese Netzwerk will ich jetzt für 2 Container verwenden.
      Getestet habe ich es erstmal nur mit einem Container mit der Compose wie folgt:

      services:
        wireguard:
          image: lscr.io/linuxserver/wireguard:latest
          container_name: wireguard
          cap_add:
            - NET_ADMIN
            - SYS_MODULE #optional
          environment:
            - PUID=1000
            - PGID=1000
            - TZ=Europe/Berlin
          networks:
            - docker-lan
           
          volumes:
            - /root/docker/wg-s2s/config:/config
          sysctls:
            - net.ipv4.conf.all.src_valid_mark=1
          restart: unless-stopped
      
      
      networks:
        docker-lan:
      
      

      Das funktioiert jetzt allerdings nicht.
      Der Container sollte eine IP aus dem Bereich 172.20.0.0/16 bekommen. (Ich weiß, es ist nicht normal ein /16 Adresse mit so vielen IPs zu nehmen. Sobald es aber läuft werde ich mich anderweitig darum kümmern).

      Das Netzwerk wird allerdings nicht übernommen und es wird ein neues Netzwerk "eröffnet".
      c762c1c4-e377-48bc-8cd5-28723419aa00-grafik.png

      Warum ist das so? Habe ich etwas falsch gemacht oder wie sollte es richtig gemacht werden?

      Danke

      C OliverIO 2 Replies Last reply Reply Quote 0
      • C
        Chrunchy @wusa last edited by

        @wusa docker sieht nach Schlüsselwort aus...
        Du solltest das LAN umbenennen.

        zusätzlich muss eine vorhandenes zu nutzendes Netzwerk bekannt gegeben werden.

        networks:
          netzwerkname:
            external: true
        
        W 1 Reply Last reply Reply Quote 0
        • W
          wusa @Chrunchy last edited by

          @chrunchy
          Perfekt, Danke.

          Jetzt sieht es wie folgt aus:

          services:
            wireguard:
              image: lscr.io/linuxserver/wireguard:latest
              container_name: wireguard
              networks:
                - RZ-net
              cap_add:
                - NET_ADMIN
                - SYS_MODULE #optional
              environment:
                - PUID=1000
                - PGID=1000
                - TZ=Europe/Berlin
               
              volumes:
                - /root/docker/wg-s2s/config:/config
              sysctls:
                - net.ipv4.conf.all.src_valid_mark=1
              restart: unless-stopped
          
          networks:
            RZ-net:
              external: true
          

          Und networks sieht so aus:
          e2f90b77-eb36-4115-91e5-d81d0730e559-grafik.png

          Jetzt hätte ich noch 2 Fragen.
          39f241ce-a173-4f36-986f-6426767c3e4b-grafik.png

          Ich habe das Netz mit 172.18.0.0/16 angelegt und 2 IP Adressen ausgenommen.
          Diese 2 Adressen würde ich nun fest den Containern zuweisen, damit sich diese nie ändern.

          Mache ich das wie folgt, dann erscheint ein Fehler:

          services:
            wireguard:
              image: lscr.io/linuxserver/wireguard:latest
              container_name: wireguard
              networks:
                RZ-net:
                  IP-Address: 172.18.0.2
              cap_add:
                - NET_ADMIN
                - SYS_MODULE #optional
              environment:
                - PUID=1000
                - PGID=1000
                - TZ=Europe/Berlin
               
              volumes:
                - /root/docker/wg-s2s/config:/config
          
              sysctls:
                - net.ipv4.conf.all.src_valid_mark=1
              restart: unless-stopped
          
          networks:
            RZ-net:
              external: true
          
          

          c3e96bc9-9bf5-4f96-83fd-e426231a4134-grafik.png

          Marc Berg 1 Reply Last reply Reply Quote 0
          • Marc Berg
            Marc Berg Most Active @wusa last edited by

            @wusa

            IP-Address: 172.18.0.2
            

            ist falsch.

            Richtig:

            ipv4_address: 172.18.0.2
            
            W 1 Reply Last reply Reply Quote 0
            • OliverIO
              OliverIO @wusa last edited by OliverIO

              @wusa

              das was @Marc-Berg sagt ist richtig.
              Wahrscheinlich musst du das Netz auch als MACVLAN Netz anlegen,
              da die Netzwerkkarte ja so erstmal nur auf die Pakete horcht, die für den Rechner bestimmt sind. Im Bridge und Hostmode haben Container ja immer die gleiche IP-Adresse wie der Host, nur die Daten der Ports werden umgeroutet. Im bridge und hostmode vergibt docker auch immer ip-adressen aus seinem eigenen privaten IP-Netz, was aber auch nur auf diesem Rechner gilt. Die 172er IP-Adresse hat mich zu begin etwas verwirrt, da docker ja den selben Netzbereich verwendet.

              Erst mit dem MACVLAN-Treiber werden auch die Pakete anderer IP-Adressen mitgehorcht und dann an den korrekten Container weitergeleitet.

              https://docs.docker.com/engine/network/drivers/macvlan/

              W 1 Reply Last reply Reply Quote 0
              • W
                wusa @Marc Berg last edited by

                @marc-berg

                services:
                  wireguard:
                    image: lscr.io/linuxserver/wireguard:latest
                    container_name: wireguard
                    networks:
                      RZ-net:
                        ipv4_address: 172.18.0.2
                    cap_add:
                      - NET_ADMIN
                      - SYS_MODULE #optional
                    environment:
                      - PUID=1000
                      - PGID=1000
                      - TZ=Europe/Berlin
                     
                    volumes:
                      - /root/docker/wg-s2s/config:/config
                
                    sysctls:
                      - net.ipv4.conf.all.src_valid_mark=1
                    restart: unless-stopped
                
                networks:
                  RZ-net:
                    external: true
                
                

                Auch hier erscheint ein Fehler.

                Address already in use.
                

                5caf3271-21d5-411d-8b39-8878a5b0b165-grafik.png

                Es sind alle Container aus. Heißt die Adresse ist definitiv nicht in Benutzung.

                1 Reply Last reply Reply Quote 0
                • W
                  wusa @OliverIO last edited by

                  @oliverio

                  Wenn ich allerdings mit diesem Parameter den Container starte:

                      networks:
                        - RZ-net
                  

                  und

                  networks:
                    RZ-net:
                      external: true
                  

                  Haben bei mir die Container aus dem Adresspool eine IP aus dem Pool.

                  OliverIO 1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @wusa last edited by

                    @wusa sagte in Docker Compose, 2 Container im selben Netzwerk:

                    Haben bei mir die Container aus dem Adresspool eine IP aus dem Pool

                    ich hatte bzgl macvlan meinen post nochmal aktualisiert. du warst schneller

                    ist dein router tatsächlich auf ein 172er netz eingestellt?
                    nicht das das auch schwierigkeiten macht, das docker sich bereits einen 172er netzbereich reserviert hat und daher eine ip daraus nicht herausgibt.

                    mein bridge ist bspw auf
                    172.17.0.0/16
                    eingestellt. da get der bereich von
                    172.17.0.0 bis 172.17.255.254
                    der nicht durch andere netze verwendet werden darf

                    W 1 Reply Last reply Reply Quote 0
                    • W
                      wusa @OliverIO last edited by wusa

                      @oliverio

                      Richtig, ich habe mich im ersten Moment auch an das Docker Netzwerk gerichtet.

                      Die 172.18.0.0/16 ist von meinem Router richtig durchgeroutet und auch nur in dem Docker Netzwerk in Verwendung, sonst nirgends in meinem Netzwerk.

                      Starte ich die Container nur mit dem

                      networks:
                       - RZ-net
                      
                      

                      Werden die IPs richtig vergeben. Ich würden nur gerne aus dem Bereich eine feste IP Adresse vergeben, damit der Container auch immer die selbe IP hat.
                      Daher auch die 2 excluded IPs.
                      Vielleicht ist das auch grundsätzlich falsch. Ich weiß es leider nicht.

                      OliverIO 1 Reply Last reply Reply Quote 0
                      • OliverIO
                        OliverIO @wusa last edited by OliverIO

                        @wusa
                        das geht so nicht.
                        aber docker definiert intern die hostnames.
                        daher, alle container die dem gleichen netzwerk zugeordnet sind können den jeweiligen anderen container unter dem servicenamen erreichen. also in deinem fall "wireguard" Zeile 2 von dem docker compose.
                        Alternativ kann man mit konfiguration den hostname auch vorgeben
                        https://docs.docker.com/reference/compose-file/services/#hostname

                        wenn du ein LAN weite eindeutige IP-Adresse haben willst, dann:

                        • hostmode: der container erhält die ip adresse deines hosts. du kannst aber keine ports mappen, aber broadcast funktioniert (weiß nicht ob das bei wireguard relevant ist)
                        • bridge mode (standard): der container erhält die ip adresse deines hosts. es werden aber nur die angegebenen ports gemappt. broadcast services gehen hier gar nicht
                        • macvlan: wie oben beschrieben. neues netzwerk mit macvlan treiber muss im docker angelegt werden. netzbereich ist dann überlappend zu dem deines LANs. Der DHCP darf dann auch keine dieser IP-Adressen vergeben. ohne Angabe von IP vergibt docker aus dem angegebenen Netzbereich dann eine und mit Angabe, dann feste IP.
                        • ipvlan: hab ich mich ehrlich noch nie mit beschäftigt. ist ähnlich macvlan. beide haben im Vergleich wohl vor und Nachteile.

                        der rechner auf dem bei mir docker läuft, hat eine feste ip, so kann ich im router easy weiterleiten. allerdings verwende ich für diese dinge lieber macvlan um den netzwerkverkehr auch wirklich containerweise zu kapseln.

                        W 1 Reply Last reply Reply Quote 0
                        • W
                          wusa @OliverIO last edited by

                          @oliverio
                          Aber das geht ja jetzt auch schon.
                          Wenn ich einfach nur die Docker Container starte, dann erhalte ich zb. für Wireguard die IP 172.18.0.2
                          Wenn ich jetzt noch einen anderen Docker Container starte, dann erhalte ich die IP 172.18.0.3

                          Jetzt kann ich per IP Adresse 172.18.0.3, da sich die Container im selben Netzwerk befinden, auf den Dienst zugreifen.

                          Starte ich jetzt allerdings die Container neu, dann kann es sein, dass ich eine andere IP Adresse für die Container erhalte.
                          Also könnte es sein, dass ich für Wireguard dann die IP 172.18.0.5 erhalte.

                          OliverIO 1 Reply Last reply Reply Quote 0
                          • OliverIO
                            OliverIO @wusa last edited by OliverIO

                            @wusa

                            wenn es jetzt schon tut, wo ist dann die frage?
                            ich habe dir alle möglichkeiten aufgeschrieben die ich kenne.
                            docker vergibt die ip aus seinem ip bereich. da wirst du auch nicht rumfummeln können. ansonsten ist es tricksen.
                            ob das gut ist, das dein lan auf dem selben bereich läuft, keine ahnung. überblicke aber deine konfiguration auch nicht ganz.

                            hier ist die dokumentation zur angabe einer ip adresse
                            https://docs.docker.com/reference/compose-file/services/#ipv4_address-ipv6_address

                            evtl ist dieser satz relevant

                            The corresponding network configuration in the top-level networks section must have an ipam attribute with subnet configurations covering each static address.
                            
                            W 1 Reply Last reply Reply Quote 0
                            • W
                              wusa @OliverIO last edited by

                              @oliverio
                              Ich will eigentlich nur eine feste IP aus dem Bereich 172.18.0.0/16 selbst vergeben, dass die IP immer gleich bleibt.

                              W 1 Reply Last reply Reply Quote 0
                              • W
                                wusa @wusa last edited by wusa

                                Ich habe jetzt eine Lösung und vermutlich das Problem gefunden.

                                services:
                                  wireguard:
                                    image: lscr.io/linuxserver/wireguard:latest
                                    container_name: wireguard
                                    networks:
                                      RZ-net:
                                        ipv4_address: 172.18.0.2
                                    cap_add:
                                      - NET_ADMIN
                                      - SYS_MODULE #optional
                                    environment:
                                      - PUID=1000
                                      - PGID=1000
                                      - TZ=Europe/Berlin
                                     
                                    volumes:
                                      - /root/docker/wg-s2s/config:/config
                                
                                    sysctls:
                                      - net.ipv4.conf.all.src_valid_mark=1
                                    restart: unless-stopped
                                
                                networks:
                                  RZ-net:
                                    external: true
                                
                                

                                Hauptproblem bei der Vergabe der festen IP Adresse ist das angelegte Netzwerk.
                                Es darf nicht mit /16 angelegt werden. Hier ist vermutlich etwas im Docker-Hintergrund was hier blockiert.
                                Legt man die Adresse mit /24 an, kann man in der Compose Datei die Adresse auch fest vergeben.

                                e3536d27-9c97-4719-acb6-81d100ef2dbb-grafik.png

                                d96374d8-1882-4bac-af70-e9858c8a66b6-grafik.png

                                1 Reply Last reply Reply Quote 0
                                • First post
                                  Last post

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                847
                                Online

                                31.6k
                                Users

                                79.5k
                                Topics

                                1.3m
                                Posts

                                4
                                14
                                134
                                Loading More Posts
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes
                                Reply
                                • Reply as topic
                                Log in to reply
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                The ioBroker Community 2014-2023
                                logo