Docker kapım, 8500 numaralı bağlantı noktasında, 8500 ana bilgisayar bağlantı noktasına eşlenen bir HTTP arabirimi ortaya çıkarır . IPv6 etkin değildir . Bu hala, localhost: 8500'den erişebilmem gerektiği anlamına geliyor. IPv6 tercih edilir, bu yüzden [:: 1]: 8500 için bir istekte bulunuyorum. Bu takılıyor, asla geri dönmüyor.
Bunu curl ile yeniden üreten bu komut takılıyor:
curl -g -6 "http://[::1]:8500"
curl's --verbose seçeneği hiçbir şey açığa çıkarmaz, ayrıca --ascii-trace. Aynı zamanda, IPv4'ün yerel ana bilgisayarına yönelik bir istek başarılı olur:
curl http://127.0.0.1:8500
bana beklenen HTML'yi veriyor. Geri döngüde bir IPv4 HTTP sunucusu çalıştırırsam,
python -m SimpleHTTPServer 4001
IPv4'ün yerel ana bilgisayarı için çok fazla HTML alıyorum
curl http://127.1:4001
ve IPv6 için uygun bir bağlantı hatası:
curl -g -6 "http://[::1]:4001"
curl: (7) Failed to connect to ::1 port 4001: Connection refused
Dikkat edilmesi gerekenler: Liman işçisi 1.7.1. IPv6 kapsayıcı için etkin değil , bu nedenle IPv6 iptable kuralı yok. (ip6tables -v -L hiçbir şey vermez)
Benim sorum: İstek neden takılıyor ve ne yapıyor?
tcp6 0 0 :::8500 :::* LISTEN 1648/docker
Büyüleyici. Neden? Ve neden engelliyor?
/proc/sys/net/ipv6/conf/all/disable_ipv6
0 verir, bu nedenle IPv6 etkinleştirilmelidir.