Eu descobri outra maneira de atingir meu objetivo final de acessar a interface do usuário da web de um dos contêineres do Docker. Acabei de configurar um proxy SOCKS v5 sobre SSH. Isso é realmente destinado apenas para fins de desenvolvimento e depuração e não deve ser usado em uma situação de produção. Eu não me responsabilizo pelas implicações de segurança da execução do sshd como root em um contêiner docker. Certifique-se de entender as conseqüências disso.
Os passos que eu dei estão listados abaixo. Para este exemplo, considere centosec2
é o meu servidor EC2 executando o CentOS, myappcontainer
é o nome do contêiner que está executando o aplicativo que hospeda a interface da web que estou tentando acessar e my-net
é o nome da rede de sobreposição que myappcontainer
está sendo executado.
Requisitos:
- Navegador que pode ser configurado para se conectar por meio de um proxy SOCKS v5. Eu sugiro o Firefox com o Add-On FoxyProxy porque ele facilita e desativa o proxy.
- Imagem do Docker que pode executar
sshd
. Eu usei o link
Etapas:
-
Porta encaminhar uma porta do seu laptop para o servidor. Neste exemplo, a 8888 será a porta que executa o proxy SOCKS do ponto de vista do seu laptop e 9696 será a porta encaminhada no servidor.
[user@laptop ~]$ ssh -L 8888:localhost:9696 centosec2 -N
-
Em outro shell, abra uma sessão ssh regular no servidor e inicie o contêiner
sshd
. Certifique-se de que o contêinersshd
esteja em execução na mesma rede que o contêiner que está executando a interface do usuário da web.[user@laptop ~]$ ssh centosec2 [user@centosec2 ~]$ docker run --rm -d -p 2222:22 --network my-net -v .ssh/id_rsa.pub:/root/.ssh/authorized_keys macropin/sshd
-
Quando o contêiner
sshd
for iniciado, use o mesmo shell para ssh no contêinersshd
e inicie um proxy SOCKS na porta que está sendo encaminhada para seu laptop.-D 9696
informa ao ssh para iniciar um servidor SOCKS na porta 9696.[user@centosec2 ~]$ ssh -D 9696 -p 2222 root@localhost -N
-
Agora, o seu laptop pode acessar a rede do docker através do proxy SOCKS em execução na porta 8888. Configure o navegador de sua preferência para se conectar à Internet por meio de um proxy SOCKS v5 em execução em
localhost:8888
. Em seguida, você poderá navegar para a interface da Web usando o nome do host do contêiner do dockerhttp://myappcontainer:8080
É um monte de arcos para saltar, mas foi a maneira mais fácil que eu poderia descobrir como conseguir isso. Espero que isso ajude alguém a sair.