Hem IPv4 hem de IPv6'yı (çift yığınlı) çalıştıran 16.04 LTS Ubuntu sunucum var. Bu sunucu aynı zamanda Docker'ı da çalıştırıyor. Bununla birlikte, sürüdeki kaplara erişmeye çalıştığımda, ancak yalnızca IPv6 üzerinden sorun yaşıyorum. İşte adımlarım:
Bir gnuicron web sunucusu çalıştıran basit bir uygulama yarattım:
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])
Bunu gunicorn -w 4 -b [::]:5678 myapp:app
sunucumda çalıştırıyorum ve bunu ağımdaki çift yığınlı istemcide çalıştırarak çalıştığını doğruladım:
$ curl --connect-timeout 15 http://[2001:db8:db0::5]:5678
Hello, World!
$ curl --connect-timeout 15 http://192.168.10.5:5678
Hello, World!
Bir Docker dosyası yazıp çalıştırıyorum:
docker build -t docker_ipv6_test .
docker run --rm --init -p 5678:5678 docker_ipv6_test
Hakkında aynı doğrulama yapıyorum ve beklendiği gibi çalışıyor. Sonra bir docker-compose.yml yazarım:
version: '3'
services:
ipv6_test:
image: docker_ipv6_test:latest
deploy:
replicas: 1
restart_policy:
condition: on-failure
ports:
- '5678:5678/tcp'
ve çalıştırın:
docker stack deploy -c docker-compose.yml ipv6_test
Sonra bu olur:
$ 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!
Ama yanlış bir şey yapıp yapmadığımı merak ediyor muyum, yoksa bir hataya mı çarptım?
Kodumun ve dosyalarımın tümü burada bulunabilir: https://github.com/SitronNO/docker_ipv6_test