Docker — A ferramenta que todo Desenvolvedor precisa conhecer

Pietra Santos
5 min readMar 14, 2022

--

Já pensou em como seu dia a dia na programação pode ser mais versátil utilizando uma ferramenta de virtualização como o Docker?!

A seguir, de maneira breve e resumida, irei apresentar a ferramenta Docker, e colocar alguns exemplos de comandos mais utilizados. Vamos lá!

Afinal, o que é o Docker?

De forma resumida, essa ferramenta é semelhante a uma VM (Virtual Machine, em português, Máquina Virtual), entretanto, é diferente de uma VM tradicional que conhecemos, como por exemplo o VirtualBox.

O Docker tem como finalidade criar, testar e implementar aplicações em Containers, que nada mais é do que um ambiente separado da máquina original. O SO (Sistema Operacional) possui diversas aplicações sendo executadas simultaneamente, mas dentro de cada Container. Eles ficam isolados, funcionando como processos, fazendo com que aplicações sejam empacotadas e segregadas. Isso acontece para que não haja nenhum conflito entre os Containers. Por isso, quando comparado a VM, os Containers são mais práticos, consomem menos recursos e possuem menos carga do que uma VM tradicional.

Outro conceito interessante é o Namespace, que garante o isolamento dos processos dos Containers, afim de proteger os mesmos do host e vice-versa.

Container

Nós vimos como ele é fundamental, e como sua funcionalidade permite que se isole do sistema, separando seus processos dentro de cada Container. Dito isso, ele é o local onde ficam as modificações da aplicação que está em execução. Porém, quando falamos sobre Containers, é imprescindível não falarmos sobre imagens, afinal, Containers são instâncias de imagens, isto é, quando rodamos uma imagem, criamos um novo Container, e podemos modificar uma imagem através do mesmo.

Imagem

As imagens são conjuntos de camadas, essas que são independentes. Isso permite que o usuário consiga compartilhar serviços em vários ambientes. Quando alteramos uma imagem, ou utilizamos o comando executar ou copiar, a imagem é criada. Ela é Read-only, isto é, quando já temos ela, só conseguimos alterar as camadas dessa imagem depois que ela foi criada. Ela também é uma instância do Container, pois quando um Container entra em execução, estamos reaproveitando a mesma imagem. Por isso do Container ser prático e leve.

Comandos mais utilizados

Abaixo estão alguns comandos utilizados no dia a dia.

Só um adendo: Se você não possuí acesso ao Admin na máquina, é importante colocar o “sudo” na frente do comando para que funcione.

docker run nome-da-imagem

Esse comando faz com que o Docker acesse o repositório e envie a imagem para o host.

docker images

Após fazer o comando docker run, o docker images mostra as imagens que foram baixadas.

docker ps ou docker container ls

Você pode utilizar o docker ps para listar quais Containers estão em execução. Existe uma maneira mais semântica, nesse caso podemos utilizar o docker container ls.

docker container ls -a

Ele lista todos os containers, até os que não estão em execução no momento.

docker start IdContainer

Ele inicia o container com o Id.

docker stop IdContainer

Interrompe o container com o Id.

apt-get update

É responsável pela atualização dos pacotes que vieram do repositório, fazendo que fique sincronizado com as informações e versões atuais dos pacotes. Geralmente damos esse comando a novos pacotes.

docker run -d -P dockersamples/static-site

Basicamente ao ser executado, ele dá um nome ao container e define uma porta aleatória.

docker exec -it IdContainer

Ele permite que você execute comandos dentro do seu container no modo interativo.

Dockerfile

É um arquivo que permite a criação das imagens, e gerar os containers através das imagens.

Comandos úteis

Build

docker build -f Dockerfile: Cria uma imagem a partir de um Dockerfile.

docker build -f Dockerfile -t NOME_USUARIO/NOME_IMAGEM: Cria e nomeia uma imagem não-oficial.

docker build -f Dockerfile -t NOME_USUARIO/NOME_IMAGEM CAMINHO_DOCKERFILE: Cria e nomeia uma imagem não-oficial informando o caminho para o Dockerfile. São comandos relacionados ao Docker Hub.

Docker Compose

docker-compose build: Realiza o build dos serviços relacionados ao arquivo docker-compose.yml, assim como verifica a sua sintaxe.

docker-compose up: Sobe todos os containers relacionados ao docker-compose, desde que o build já tenha sido executado.

Redes do Docker

As redes do Docker existem para permitir a comunicação entre os containers. Há 3 redes padrões, e conseguimos visualizá-las pelo comando docker network ls.

Rede bridge

Ela é a rede padrão. Podemos criar a nossa própria bridge através do comando docker network - -driver bridge nome-da-bridge, para se comunicar com o container. Assim, podemos criar vários containers associados a nossa rede bridge que foi criada.

Rede None e Rede Host

A função da Rede None é isolar os containers para comunicação externa, removendo a interface de rede. Já a Host faz a remoção do isolamento do container, passando para ele todas as interfaces.

Por fim, espero que desbrave o máximo possível dessa ferramenta, e mergulhe no mar de recursos que ela proporciona. Espero ter ajudado com as informações. Bons estudos!

--

--

Pietra Santos

Software Developer, passionate about tech, astrophysics, potato, soccer and anime, not necessarily in that order.