IPv6 не работает в Docker Swarm?

489
Sitron_NO

У меня есть сервер Ubuntu 16.04 LTS, работающий на IPv4 и IPv6 (двойной стек). На этом сервере также работает Docker. Однако у меня возникают проблемы, когда я пытаюсь получить доступ к контейнерам в рое, но только через IPv6. Вот мои шаги:

Я создал простое приложение с веб-сервером gnuicron:

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]) 

Я запускаю это gunicorn -w 4 -b [::]:5678 myapp:appна своем сервере и проверяю, работает ли это, запустив это на клиенте с двумя стеками в моей сети:

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

Я пишу Dockerfile и запускаю его:

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

Я запускаю ту же проверку, что и примерно, и она работает, как ожидалось. Затем я пишу 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' 

и запустить его:

docker stack deploy -c docker-compose.yml ipv6_test 

Тогда это происходит:

$ 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! 

Но мне было интересно, если я делаю что-то не так, или я ошибся?

Весь мой код и файлы доступны здесь: https://github.com/SitronNO/docker_ipv6_test

1

0 ответов на вопрос