Docker¶
IPv6¶
Docker muss seine IPv6-Fähigkeiten verbessern. Meine Gäste benötigen IPv6-Konnektivität, z. B. um externe Datenbankserver zu erreichen, die nur über IPv6 erreichbar sind. In der Standardkonfiguration haben Container keine IPv6-Adresse und können daher überhaupt keine Verbindung zur Datenbank herstellen.
Deshalb erstelle ich eine Bridge mit einem RFC1918-Bereich und einem ULA-IPv6-Bereich. Dann verwende ich nftables für IPv4-Masquerading, während IPv6 nativ geroutet werden kann.
- Docker-Netzwerk mit gegebenem Bridge-Namen erstellen:
Das erstellt eine persistente Dual-Stack-Bridge. Routing und Masquerading werden durch diese Ansible-nftables-Role verwaltet.
Eine Docker-Compose-YAML könnte so aussehen. Für jeden Container einen Netzwerknamen vergeben, aber auf das brdocker-Netzwerk referenzieren.
version: "3.5"
services:
busy:
image: busybox
#command: ping6 -c 4 google.com
#command: top
#command: ip a s
#command: ping6 2a02:2e0:3fe:1001:7777:772e:2:85
command: ping 8.8.8.8 -c 6
networks:
- busyboxnet
networks:
busyboxnet:
external:
name: brdocker
Dies ist die Ansible-Konfiguration: