Ich habe hier eine Lösung gefunden
Danke an Stéphane Graber.
Zitat:
"Wenn Sie ein modernes LXD mit einer LXD-verwalteten Bridge ausführen, können Sie einfach die Eigenschaft ipv4.address auf der Netzwerkschnittstelle des Containers festlegen.
- lxc Stopp c1
- lxc Netzwerkanschluss lxdbr0 c1 eth0 eth0
- lxc config device set c1 eth0 ipv4.address 10.99.10.42
- lxc starte c1
"
Wenn Sie IP-Adressen für Container in LXD angeben möchten, sehen Sie sich den /etc/default/lxd-bridge
an Datei. Dort finden Sie einen Platz zum Einbinden einer externen dnsmasq-Konfigurationsdatei.
Angenommen, Sie verwenden Ubuntu 16.04,
Öffnen Sie /etc/default/lxd-bridge
in Ihrem bevorzugten Editor. Sie müssen sudo
verwenden .
Ungefähr bei Zeile 16,
LXD_CONFILE=""
Fügen Sie einen Eintrag hinzu, der auf eine dnsmasq-Konfigurationsdatei verweist. Sie müssen diese Datei erstellen. Also nennen Sie es, wie Sie wollen. Etwas wie lxd_bridge.conf
.
Erstellen und bearbeiten Sie dann die Datei, die Sie oben benannt haben.
Fügen Sie für jeden Container, dem Sie eine bestimmte IP-Adresse zuweisen möchten, eine Zeile hinzu.
So:
dhcp-host=containername,ipaddress
Dann müssen Sie lxd-bridge neu starten und dann die Container neu starten.
Hier ist ein ausführlicher Artikel dazu:
Statische LXD-IPs
Beachten Sie, dass, wenn Sie Alpine Linux in Ihren Containern ausführen, zusätzliche Schritte unternommen werden müssen, damit dies funktioniert.alpine
Systeminfo:lxc-3.0.1
auf Ubuntu Server 18.04.1
.
Nach langem Suchen habe ich diesen einfachen Befehl gefunden, um einem Container eine statische IP zuzuweisen:
lxc config set [container] raw.lxc 'lxc.net.[i].ipv4.address = [ip]/[subnet-mask]'
wobei [container]
, [i]
, [ip]
und [subnet-mask]
sind der Containername, die Netzwerkschnittstellennummer, die gewünschte statische IP-Adresse bzw. das CIDR für die gewünschte Subnetzmaske.
Zum Beispiel, wenn Sie 240.10.0.20
zuweisen möchten mit Subnetzmaske 255.255.255.0
an die 0-te Netzwerkschnittstelle des Containers mit dem Namen hello
, können Sie Folgendes verwenden:
lxc config set hello raw.lxc 'lxc.net.0.ipv4.address = 240.10.0.20/24'
Wahrscheinlich müssen Sie den Container neu starten, nachdem Sie den Befehl ausgeführt haben.
Beachten Sie, dass dies wahrscheinlich nicht die aktuelle IP-Adresse des Containers ändert (in meinem Setup sowieso); Der Container sollte sowohl unter seiner ursprünglichen IP als auch unter der neu zugewiesenen IP erreichbar sein. Als Ergebnis wird der Containereintrag in lxc list
kann mehrere IP-Adressen enthalten.
Sehen Sie sich hier die akzeptablen Konfigurationsschlüssel an, die an lxc.net.[i]
angehängt werden können . Diese Webseite enthält Informationen zur CIDR-Notation.
Leider weiß ich nicht mehr, wo ich diese Lösung zum ersten Mal gefunden habe. Hier ist ein relevantes GitHub-Problem, das nützliche Informationen enthalten könnte.