Brak komunikacji między kontenerem a hostem Win11 WSL2

4

Mam sobie kontener w dockerze na WSL2. Kontener musi się skomunikować z innym serwisem przez HTTP poza dockerem (jakiś spring odpalony na localhoscie) po innym porcie niż standardowe 80. Wybrałem np. 8080
No i kurcze komunikacji z wewnątrz kontenera brak. Curl pokazuje błąd nr 7. Używam host.docker.internal do komunikacji. Nazwa jest rozwiązywana na 192.168.50.2, podsieć w Docker Desktop jest na 192.168.50.X. Ping działa. Po porcie 80 i 443 mam jakąś komunikację. Nmap na porcie 8080 pokazuje filtered, na 80 open.
Kontener jest na Linux Alpine i nie mam w nim żadnego ufw. Od strony Windows firewall sprawdzony.
Nie jestem Linuxowcem więc może na tym Alpine jest jakiś inny Firewall? Znalazłem coś o awall ale Linux nie rozpoznaje polecenia.
Co ominąłem jeszcze?

2

A curlem możesz strzelić do tej usługi z kontenera: https://docs.docker.com/desktop/mac/networking/#use-cases-and-workarounds ?

2

Nie. CURL error 7. Zarówno z samej linii komend jak i z PHPowego skryptu wykorzystującego CURLa.
Natomiast zobaczyłem w podesłanej dokumentacji jeden dns jakiego nie znałem. gateway.docker.intenal
Zobaczę co zwraca. Może jednak coś jest jeszcze nie tak z innymi ustawieniami.

0

Jeszcze takie pytanie, może głupie, port 8080 na hoscie masz otwarty na zaporze?

2

Żadne pytanie nie jest głupie. Na windzie tak. Kontrolnie nawet dla testu wyłączyłem zaporę całkowicie.

0

A weź całego powyłączaj tą usługę oraz docker i zobacz czy coś już nie słucha na tym 8080. Ewentualnie spróbuj zmienić ten port, bo 8080 jest dosyć popularny.

5

Trzeba się było odowołać do IP WSLa bezpośrednio w wsku wtedy jest ono z puli 172.29.X.X
Znalazłem taki kawałek skryptu, pomagający w diagnostyce na różnych systemach

local myIp='host.docker.internal'

    case ${_PLATFORM} in
        linux)
            myIp=$(ip route get 1 | sed 's/^.*src \([^ ]*\).*$/\1/;q')
            ;;
        macos)
            myIp=$(ipconfig getifaddr en0)
           
            ;;
        windows)
             # TODO check windows host IP in WSL and WSL2
             myIp=$(tail -1 /etc/resolv.conf | cut -d' ' -f2)
            ;;
    esac

    echo "${myIp}"
    return "${TRUE}"

1 użytkowników online, w tym zalogowanych: 0, gości: 1