Wie die Zuweisung von IPv6-Adresse mit docker-Komponieren
Ich bin mit docker 1.12.1 auf Ubuntu 16.04, und Andockfenster-verfassen 1.8.1. Ich werde versuchen, die Compose-Datei aus https://docs.docker.com/compose/compose-file/#ipv4-address-ipv6-address zu laufen. Zur Referenz, ich habe docker-compose.yml
mit folgendem Inhalt:
version: '2'
services:
app:
image: busybox
command: ifconfig
networks:
app_net:
ipv4_address: 172.16.238.10
ipv6_address: 2001:3984:3989::10
networks:
app_net:
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "true"
ipam:
driver: default
config:
- subnet: 172.16.238.0/24
gateway: 172.16.238.1
- subnet: 2001:3984:3989::/64
gateway: 2001:3984:3989::1
Jetzt läuft docker-compose up
produziert
Creating network "tmp_app_net" with driver "bridge"
Creating tmp_app_1
Attaching to tmp_app_1
app_1 | eth0 Link encap:Ethernet HWaddr 02:42:AC:10:EE:0A
app_1 | inet addr:172.16.238.10 Bcast:0.0.0.0 Mask:255.255.255.0
app_1 | inet6 addr: fe80::42:acff:fe10:ee0a/64 Scope:Link
app_1 | UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
app_1 | RX packets:4 errors:0 dropped:0 overruns:0 frame:0
app_1 | TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
app_1 | collisions:0 txqueuelen:0
app_1 | RX bytes:520 (520.0 B) TX bytes:90 (90.0 B)
app_1 |
app_1 | lo Link encap:Local Loopback
app_1 | inet addr:127.0.0.1 Mask:255.0.0.0
app_1 | inet6 addr: ::1/128 Scope:Host
app_1 | UP LOOPBACK RUNNING MTU:65536 Metric:1
app_1 | RX packets:0 errors:0 dropped:0 overruns:0 frame:0
app_1 | TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
app_1 | collisions:0 txqueuelen:1
app_1 | RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
app_1 |
tmp_app_1 exited with code 0
Die IPv6-Adresse nicht zugewiesen ist.
Ich bereits versucht:
- Start des docker-daemon mit
--ipv6
- Start des docker-daemon mit
--ipv6 --fixed-cidr-v6="2001:3984:3989::/64"
- Beachten Sie, dass
docker run -it busybox ifconfig
tatsächlich gibt mir eine IPv6-Adresse hier ein (aus der--fixed-cidr
Subnetz zugewiesen ist, um die Standard -bridge
Netzwerk)
- Beachten Sie, dass
- Mit meinem eigentlichen IPv6-Subnetz statt aus dem code-Beispiel, und wiederholen 2. mit diesem Subnetz
Keinen Erfolg. Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es stellt sich heraus, das ist in der Tat ein docker-verfassen bug das wird behoben, in 1.9.0.
Inzwischen gibt es einen workaround durch anlegen eines custom-Netzwerk mit der
docker network
Befehl:... die können dann zur Verfügung gestellt werden innerhalb
docker-composed.yml
schreibenJa. Docker compose unterstützt das IPv6-Protokoll, und es wurde in docker engine 1.5 und höher. Es ist noch Problem mit der neuesten compose-Datei-format 3.3
so könnten Sie das 2.1-format. Noch docker swarm ist nicht reif genug mit Voraus-networking-Konfiguration und IPv6 nicht unterstützt, daher ist es nicht unter 3.3 fil-format.
Hier ist Beispiel-Beispiel-Datei,
docker-Komponieren.yml
Dieser docker compose-Datei erstellen Sie ein neues Netzwerk namens testping_app_net basierend auf IPv6-Netzwerk unter dem Subnetz 2001:3200:3200::/64 und container bekommen sollen, auf IPv6-Adresse automatisch zugewiesen.
Lassen, bringen wir Ihnen Dienstleistungen mithilfe von docker-Komponieren und zu sehen, wenn die Dienste kommuniziert über das IPv6-Protokoll:
und Sie könnten überprüfen Sie die IPv6-Adresse für jeden Behälter,
Werden Sie sehen, dass ein neuer container bekommt IPv6 Adresse 2001:3200:3200::20 und damit sind Sie in der Lage, miteinander zu kommunizieren.
Hinweis : Wenn Sie möchten, aktivieren Sie IPv6 auf dem host-Rechner, die standardmäßig verwendet die IPv4-Adresse, die Sie hinzufügen müssen, um diese beiden Zeile in die daemon.json unter /etc/Andockfenster Verzeichnis:
und starten Sie den docker-daemon mit dem Befehl: