Docker unterschiedliche Interfaces (eth0) verwenden möglich?

  • Hallo Leute,

    nun bin ich mittlerweile seit Wochen dran Docker besser kennenzulernen. Nun habe ich ein Problem auf das ich einfach keine Lösung finde.

    Ich habe die Situation, dass ich 2 Container über ein anderes Interface anbinden will. Mein QNAP verfügt ja über 4 Anschlüsse. Ich würde nun gerne diese 2 Container über ein anderes Interface anbinden als die anderen Container.

    Ist dies möglich? Muss ich dafür eher über die iptables dies regeln oder macvlan? Oder wie kann man dies realisieren. Die 2 Container bräuchten auch kein DHCP, da sie von einer Firewall direkt IP`s zugeteilt bekommen sollten.


    Nochmals kurz erklärt.

    QNAP NAS (192.168.1.20/24) -> Docker (10.0.5.1 über eth0 was ja die 192.168.1.20 vom QNAP ist) -> Container (IPs aus dem 10.0.5.0er Bereich)

    Ich bräuchte nun jedoch 2 Container die sich von den anderen komplett abschotten und der VirtualSwitch auch als Isoliert dargestellt werden soll, damit mein QNAP über diesen Eingang/Ausgang gar keine IP bekommt und somit nicht intern zugänglich ist.

    Firewall (10.0.10.0/27) -> QNAP NAS Isoliert (0.0.0.0) -> Docker Container (DHCP vom Router)


    Ist dies machbar? Mit der Virtual Station ist dies ohne weitere Probleme möglich. Ich verstehe nur Docker noch nicht so genau wie dies intern funktioniert und ob man mehrere Ausgänge einrichten kann, oder ob man dies über macvlan/ipvlan realisieren muss.


    Hoffentlich gibt es jemand der sich damit beschäftigt hat und mir weiterhelfen kann.

    Hallo Leute.

    Es ist mir endlich mal einen "Durchbruch" gelungen und zwar habe ich ein macvlan erstellt.


    Bash
    docker network create -d macvlan -o parent=qvs1 \
    --subnet 192.168.1.0/24 \
    --gateway 192.168.1.1 \
    --ip-range 192.168.1.192/27 \
    --aux-address 'host=192.168.1.223' \
    mynet
    Bash
    ip link add mynet-macvbridge link qvs1 type macvlan  mode bridge
    ip addr add 192.168.1.223/32 dev mynet-macvbridge
    ip link set mynet-macvbridge up
    Bash
    docker  run --net=mynet -itd alpine /bin/sh

    Dies ist das Ergebnis:

    Soweit so gut. Leider war ich schonmal so weit und hatte dasselbe Problem. Und zwar konnte ich einfach keine Adressen auflösen. Es scheint kein DNS Server zu funktionieren.

    Bash
    / # nslookup www.google.de                                                                                                                                                                                                                                                      
    nslookup: can't resolve '(null)': Name does not resolve   


    Hat da jemand eine Idee?

    Ich wäre euch echt sehr dankbar...