Docker: o que é um container e como começar a usar

Um guia para entender sobre o recurso o recurso que se tornou fundamental no desenvolvimento de software contemporâneo

Se você está começando no mundo do desenvolvimento de software, provavelmente já ouviu falar sobre Docker e containers. Mas o que exatamente é um container e por que essa tecnologia se tornou tão fundamental para desenvolvedores modernos? Neste artigo, vamos desvendar esse conceito de forma clara e prática.

O problema que os containers resolvem

Imagine que você está desenvolvendo uma aplicação web com três componentes principais: um frontend em React, uma API em Python e um banco de dados PostgreSQL. Para trabalhar nesse projeto, você precisaria instalar Node, Python e PostgreSQL na sua máquina.

Mas aqui começam os problemas:

  • Como garantir que você está usando as mesmas versões que outros desenvolvedores da equipe?

  • Como evitar conflitos com outras versões dessas ferramentas já instaladas na sua máquina?

  • Como garantir que o ambiente de desenvolvimento seja idêntico ao de produção?

  • E se você precisar trabalhar em múltiplos projetos com versões diferentes das mesmas dependências?

É exatamente aqui que os containers entram em cena para revolucionar seu fluxo de trabalho.

Afinal, o que é um container?

De forma simples, containers são processos isolados para cada componente da sua aplicação. Cada parte do seu sistema - o frontend React, a API Python e o banco de dados - executa em seu próprio ambiente isolado, completamente separado de tudo mais na sua máquina.

Características principais dos containers

Os containers oferecem benefícios que transformaram a forma como desenvolvemos e implantamos aplicações:

Característica

Descrição

Auto-suficientes

Cada container contém tudo que precisa para funcionar, sem depender de instalações prévias na máquina host

Isolados

Executam em isolamento, com mínima influência no host e em outros containers, aumentando a segurança

Independentes

Cada container é gerenciado de forma independente. Remover um não afeta os outros

Portáveis

Funcionam em qualquer lugar - seu computador, data center ou nuvem

Containers vs máquinas virtuais: qual a diferença?

Uma dúvida comum é sobre a diferença entre containers e máquinas virtuais (VMs). Embora ambos forneçam isolamento, funcionam de maneiras bem diferentes:

Máquinas virtuais são sistemas operacionais completos, com seu próprio kernel, drivers de hardware, programas e aplicações. Criar uma VM apenas para isolar uma aplicação gera bastante overhead.

Containers, por outro lado, são simplesmente processos isolados com todos os arquivos necessários para executar. Se você roda múltiplos containers, todos compartilham o mesmo kernel, permitindo executar mais aplicações com menos infraestrutura.

Containers e VMs trabalhando juntos

Na prática, é comum ver containers e VMs sendo usados em conjunto. Em ambientes de nuvem, por exemplo, as máquinas provisionadas geralmente são VMs. No entanto, em vez de provisionar uma máquina para executar uma aplicação, uma VM com runtime de containers pode executar múltiplas aplicações containerizadas, aumentando a utilização de recursos e reduzindo custos.

Mãos na massa: executando seu primeiro container

Vamos colocar a teoria em prática e executar seu primeiro container usando Docker Desktop.

Passo 1: Instalação do Docker Desktop

Primeiro, certifique-se de ter o Docker Desktop instalado em sua máquina. Você pode fazer o download diretamente do site oficial do Docker.

Passo 2: Executando o container

Abra seu terminal e execute o seguinte comando:

docker run -d -p 8080:80 docker/welcome-to-docker

O que esse comando faz:

  • docker run: inicia um novo container

  • -d: executa em modo detached (background)

  • -p 8080:80: mapeia a porta 80 do container para a porta 8080 da sua máquina

  • docker/welcome-to-docker: a imagem que será usada

Parabéns! Você acabou de executar seu primeiro container! 🎉

Passo 3: Verificando containers em execução

Para ver seus containers rodando, use:

docker ps

Você verá uma saída similar a esta:

CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS          PORTS                      NAMES
a1f7a4bb3a27   docker/welcome-to-docker   "/docker-entrypoint.…"   11 seconds ago   Up 11 seconds   0.0.0.0:8080->80/tcp       gracious_keldysh

Dica: O comando docker ps mostra apenas containers em execução. Para ver todos os containers, incluindo os parados, use docker ps -a

Passo 4: Acessando a aplicação

Abra seu navegador e acesse http://localhost:8080. Você verá um site simples sendo servido pelo seu container!

Quando você iniciou o container, expôs uma de suas portas para sua máquina. Pense nisso como criar uma configuração que permite conectar através do ambiente isolado do container.

Passo 5: Parando o container

O container continuará rodando até que você o pare. Para isso:

docker stop a1f

Dica: Você não precisa fornecer o ID completo do container. Apenas os primeiros caracteres que o tornem único são suficientes.

Explorando recursos do Docker Desktop

O Docker Desktop oferece uma interface gráfica intuitiva para gerenciar seus containers:

  1. Visualização de containers: veja todos os seus containers em execução ou parados

  2. Exploração do sistema de arquivos: navegue pelos arquivos dentro do container

  3. Logs em tempo real: acompanhe os logs da aplicação

  4. Estatísticas de uso: monitore CPU, memória e uso de rede

Comandos Docker essenciais para iniciantes

Comando

Descrição

docker run

Cria e inicia um novo container

docker ps

Lista containers em execução

docker ps -a

Lista todos os containers

docker stop

Para um container em execução

docker start

Inicia um container parado

docker rm

Remove um container

docker images

Lista imagens disponíveis localmente

docker pull

Baixa uma imagem do registro

Casos de uso práticos de containers

Desenvolvimento local

Containers permitem que você configure ambientes de desenvolvimento rapidamente, sem poluir sua máquina com dezenas de instalações de ferramentas e dependências.

Microserviços

Em arquiteturas de microserviços, cada serviço roda em seu próprio container, facilitando o desenvolvimento, teste e deploy independente de cada componente.

CI/CD

Pipelines de integração e entrega contínua usam containers para garantir consistência entre ambientes de teste e produção.

Testes isolados

Execute testes em containers para garantir que não haja interferência de outras aplicações ou configurações da máquina host.

Perguntas frequentes sobre containers

Containers são mais seguros que executar aplicações diretamente?

Sim, containers oferecem uma camada adicional de isolamento. Mesmo que uma aplicação seja comprometida dentro de um container, o invasor terá dificuldade em acessar o host ou outros containers.

Posso executar múltiplos containers simultaneamente?

Absolutamente! Na verdade, essa é uma das principais vantagens dos containers. Você pode executar dezenas ou até centenas de containers simultaneamente, dependendo dos recursos da sua máquina.

Containers consomem muitos recursos?

Não. Ao contrário das VMs, containers são extremamente leves porque compartilham o kernel do sistema operacional host. Eles iniciam em segundos e usam significativamente menos memória.

Preciso conhecer Linux para usar Docker?

Não necessariamente. Embora conhecimentos básicos de Linux ajudem, o Docker Desktop abstrai muita dessa complexidade, permitindo que você trabalhe com containers mesmo em Windows ou macOS.

Próximos passos na sua jornada com Docker

Agora que você entende o que são containers e executou seu primeiro, é hora de aprofundar seus conhecimentos:

  1. Aprenda sobre imagens Docker: entenda como as imagens funcionam e como criar suas próprias

  2. Explore Docker Compose: aprenda a orquestrar múltiplos containers

  3. Estude Dockerfile: descubra como criar imagens customizadas para suas aplicações

  4. Pratique persistência de dados: entenda volumes e como manter dados entre reinicializações

  5. Explore registries: aprenda a publicar e compartilhar suas imagens

Conclusão

Containers revolucionaram a forma como desenvolvemos e implantamos aplicações, oferecendo isolamento, portabilidade e eficiência. Ao começar sua jornada com Docker, você está adquirindo uma habilidade essencial no mercado de tecnologia atual.

A beleza dos containers está na sua simplicidade: processos isolados que contêm tudo que precisam para executar. Seja desenvolvendo localmente, testando em CI/CD ou executando em produção, containers garantem consistência e confiabilidade.

Comece pequeno, experimente com containers simples e, gradualmente, expanda para arquiteturas mais complexas. A comunidade Docker é vasta e sempre pronta para ajudar, então não hesite em explorar a documentação oficial e participar de fóruns e discussões.

Quer se aprofundar ainda mais? Continue acompanhando o blog da Data Hackers para mais conteúdos sobre Docker, DevOps e as melhores práticas de desenvolvimento moderno.