IPv6 funktioniert nicht im Docker-Schwarm?

559
Sitron_NO

Ich habe einen Ubuntu Server 16.04 LTS, auf dem sowohl IPv4 als auch IPv6 (Dual-Stack) ausgeführt werden. Dieser Server führt auch Docker aus. Ich habe jedoch Probleme, wenn ich versuche, auf die Container im Schwarm zuzugreifen, jedoch nur über IPv6. Hier sind meine Schritte:

Ich habe eine einfache App erstellt, die einen gnuicron-Webserver ausführt:

def app(environ, start_response): """Simplest possible application object""" data = b'Hello, World!\n' status = '200 OK' response_headers = [ ('Content-type', 'text/plain'), ('Content-Length', str(len(data))) ] start_response(status, response_headers) return iter([data]) 

Ich führe dies gunicorn -w 4 -b [::]:5678 myapp:appauf meinem Server aus und vergewissere mich, dass es funktioniert, indem ich es auf einem Dual-Stack-Client in meinem Netzwerk ausführe :

$ curl --connect-timeout 15 http://[2001:db8:db0::5]:5678 Hello, World! $ curl --connect-timeout 15 http://192.168.10.5:5678 Hello, World! 

Ich schreibe ein Dockerfile und führe es aus:

docker build -t docker_ipv6_test . docker run --rm --init -p 5678:5678 docker_ipv6_test 

Ich führe die gleiche Überprüfung wie ungefähr aus und es funktioniert wie erwartet. Dann schreibe ich eine docker-compose.yml:

version: '3' services: ipv6_test: image: docker_ipv6_test:latest deploy: replicas: 1 restart_policy:  condition: on-failure ports: - '5678:5678/tcp' 

und führe es aus:

docker stack deploy -c docker-compose.yml ipv6_test 

Dann passiert das:

$ curl --connect-timeout 15 http://[2001:db8:db0::5]:5678 curl: (28) Operation timed out after 0 milliseconds with 0 out of 0 bytes received $ curl --connect-timeout 15 http://192.168.10.5:5678 Hello, World! 

Aber ich habe mich gefragt, ob ich etwas falsch mache oder einen Fehler gefunden habe.

Alle meine Codes und Dateien sind hier verfügbar: https://github.com/SitronNO/docker_ipv6_test

1

0 Antworten auf die Frage