Ir ao conteúdo

Troubleshoot – Docker (WLS 2): An attempt was made to access a socket in a way forbidden by its access permissions.

Olá pessoal! Já fazia tempo que não postava nada aqui, mas hoje vou postar esse troubleshoot que tive que fazer porque atualizei o Docker e voltei a tomar esse erro:

An attempt was made to access a socket in a way forbidden by its access permissions.

Falei “voltei”, porque anteriomente ocorre isso… eu até postei o troubleshoot da resolução (http://charlesmms.azurewebsites.net/2019/10/24/troubleshoot-docker-an-attempt-was-made-to-access-a-socket-in-a-way-forbidden-by-its-access-permissions/), mas eu estava usando o Docker no Windows com hyper-v e fiz via CMD. Contudo, neste caso estou usando o Docker no Windows com o WLS 2 (Windows Subsystem for Linux) e fiz com bash.

Problema

Basicamente, o problema ocorre quado tentamos rodar uma imagem no Docker, aparecendo a seguinte mensagem:

Na pesquisa que fiz (sem muita profundidade), esse problema é comum quando é feito atualizações no Docker. E por mais que você tenha todas as configurações corretas em sua máquina, o problema pode acontecer ao atualizar o seu docker.

E o motivo do problema é que o  Hyper-v bloqueia um range de portas e pode pegar algumas portas que são utilizadas por containers do Docker, no meu caso foi do Cassandra (porta 9042). Então, a resolução é reservar essa porta.

Mais detalhes: Unable to bind ports: Docker-for-Windows & Hyper-V excluding but not using important port ranges #3171

Solução

A resolução é apenas reservar a porta para que não ocorra novamente esse problema. Para isso vamos abrir o bash como administrador:

1º Verifique se a porta necessária está reservada, executando esse comando:

netsh interface ipv4 show excludedportrange protocol=tcp

Se sua porta estiver em um dos ranges, pare o winnat:

net stop winnat

Proibir reserva dinâmica para a porta necessária, no meu caso foi a 9042:

netsh int ipv4 add excludedportrange protocol=tcp startport=9042 numberofports=1

Reinicie o winnat:

net start winnat

E pronto! Deve funcionar:

Descritivo da solução original

Referências

  1. Solução: Unable to bind ports: Docker-for-Windows & Hyper-V excluding but not using important port ranges #3171
Publicado emTroubleshoot