DOCKER SERIES: LAB … Networking: PORTAS ( -d, -p, e -P )
Quase Natal … E como estamos? Muito bem, obrigado! É o que eu espero que você tenha respondido (rsrs) Papai Noel ainda não chegou, mas prometeu que faria de tudo para entregar a série DOCKER completa antes da virada do ano … Então, sendo assim, vamos direto a mais um conteúdo 😉
Continuando do ponto em que paramos, hoje iremos conhecer algumas flags (parâmetros) relativas a REDES no próprio docker. Mas, antes de qualquer coisa …
WSL : Windows Subsystem for Linux
Aqui no BLOG já ensinei diversos maneiras de como executar o Linux em computadores. Somente para citar umas poucas: Oracle VM Virtualbox, GNOME Boxes, Virt-Manager, HashiCorp Vagrant … Basta que você procure tais palavrinhas na caixa de pesquisa deste site ( HOME > barra lateral direita) 🙂
E tendo ciência de que a cada dia chegam mais e mais pessoas novas, gosto sempre de mostrar “novas” maneiras de rodar o nosso querido Pinguim em qualquer máquina ou setup. Bom, e o que seria esse WSL? De um passado distante como rivais, verdadeiros inimigos declarados, chegamos até um presente “recente” como amigos, quase irmãos, entre esses dois sistemas: Linux e Windows. Essa fraternidade ocorreu pois desde 2014, com a mudança de CEO da Microsoft, e a ascensão de Satya Nadella ao cargo, a empresa declarou o seu amor pelo Tux com um singelo slogan: Microsoft ❤ Linux. Na prática, ela admitiu utilizar o Pinguim internamente, em sua infraestrutura, e também criou programas para suportar o Linux nativamente em seu ecossistema. Um dos resultados disso foi o Windows Subsystem for Linux
História explicada, vamos ao laboratório! Para instalá-lo no Windows 10/11 abra o prompt do PowerShell como administrador ou baixe o novo aplicativo chamado Windows Terminal e execute o seguinte:
wsl --install

Após o término, reinicie o sistema para validar as alterações efetuadas! Por padrão, o mesmo instala e adota o Ubuntu como Linux. Então, quando o Windows retornar, procure-o no Menu Iniciar e depois abra para ter acesso ao bash local.

DOCKER : Como instalar
Um simples comando é capaz de abstrair todo o trabalho árduo que tivemos aqui e fazê-lo automaticamente por nós. Copie e cole dentro do Ubuntu:
curl -fsSL https://get.docker.com | bash

sudo service docker start
sudo service docker status
sudo docker run hello-world

FLAG -d : Detached Mode
Detached Mode, ou equivalente do pt-BR, Modo Desanexado, implica dizer que o container será executado em segundo plano. Ou seja, o mesmo não causará nenhum travamento. Do ponto de vista do usuário, ele continua sendo capaz de executar outros comandos no shell do Linux. É como se fosse um modo “separado” para o DOCKER.
Portanto, escolha uma imagem no Docker Hub para testarmos esse novo modo imediatamente. No meu caso, escolhi esse repositório chamado dockersamples para rodar um mini servidor web. Observem:

docker run -d dockersamples/static-site

docker ps

FLAG -P : Mapeando portas
Se por acaso você tentar acessar o endereço localhost na porta 80 (como mostra a figura anterior), essa será a tela exibida:

Poxa Victor! Que droga hein?! 😡 Espera um pouco, que ainda não terminei (…) Para entendermos o motivo de tal erro, precisamos voltar no tempo e puxar pela memória a real premissa que fez surgir os containers e por tabela, o docker. Isso mesmo! O tão sonhado isolamento de recursos … A – Separar o consumo de CPU, RAM por instância; B – Criar diferentes sistemas de arquivos; C – Distinguir usuários para cada servidor virtual; são apenas alguns de infinitos cenários que a tecnologia de contêinerização nos proporcionou, e possibilita até os dias de hoje.
Então, dessa forma, o mesmo vale para o quesito REDES (ou se preferir, interconexões). Aqui também é preciso separar o joio do trigo. Em outras palavras, a porta 80 do nosso container não é a mesma do hospedeiro. Para que haja essa comunicação é necessário fazer um mapeamento de portas. Aliás, melhor dizendo, ENTRE portas!!!!
Sendo assim, para corrigir esse pequeno mal entendido, primeiro remova o container atual para logo em seguida criarmos um novo:
sudo docker ps
sudo docker rm 8a03d30befb2 --force
sudo docker run -d -P dockersamples/static-site
sudo docker ps

A-há! Reparem que agora ele fez um mapeamento de portas. Eu sei, eu sei. Ficou meio maluco e aleatório … MAS, por ora o que importa é que temos um certo nível de mapeamento. Para testar basta voltar ao navegador e passar a porta informada:

Lembrando que existe outro comando para visualizar apenas informações referentes às portas de determinado container. Sendo ele:
sudo docker port e726635c56cb

FLAG -p : “Explicitando” portas
Caso queira definir suas próprias portas, saiba que também é possível. Graças ao Docker, temos outra flag nomeada de -p (minúsculo). E com ela somos capazes de ditar qualquer número de porta TCP ou UDP.
Como de praxe, primeiro exclua o container anterior, e em seguida crie outro com os novos parâmetros:
sudo docker run -d -p 8080:80 dockersamples/static-site


Curta, compartilhe, comente
REFERÊNCIAS:
https://ubuntu.com/tutorials/install-ubuntu-on-wsl2-on-windows-11-with-gui-support
https://docs.docker.com/engine/reference/run/#detached-vs-foreground