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
Figura 01. reinicie para concluir

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.

Figura 02. Ubuntu 20.04 LTS / Linux 5.10.16.3-microsoft

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 
Figura 03. instalando docker
sudo service docker start
sudo service docker status
sudo docker run hello-world
Figura 04. 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:

Figura 05. dockersamples/static-site
docker run -d dockersamples/static-site
Figura 06. docker run -d
docker ps
Figura 07. 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:

Figura 08. error

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
Figura 09. flag -P

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:

Figura 10. hello docker

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

sudo docker port e726635c56cb
Figura 11. docker port

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
Figura 12. flag -p
Figura 13. localhost:8080

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

Deixe uma resposta

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.