Docker: Simplificando Ambientes de Desenvolvimento

Imagem Docker

O Docker se consolidou como uma das principais ferramentas para desenvolvedores e equipes de TI que buscam padronizar e automatizar ambientes de desenvolvimento e produção. Ele permite empacotar aplicações e suas dependências em containers, garantindo que o software funcione de forma consistente, independentemente da máquina ou sistema operacional utilizado.

Neste artigo, vamos explorar os principais conceitos do Docker, a importância do Docker Compose e como você pode usá-los para criar ambientes completos de forma rápida e eficiente.

O que é Docker?

 Docker é uma plataforma que utiliza containers para executar aplicações, mas diferente das máquinas virtuais tradicionais, os containers compartilham o mesmo kernel do sistema operacional, tornando-os muito mais leves e rápidosUm container é como uma “caixa isolada” que contém tudo o que a aplicação precisa para funcionar: código da aplicação, dependências (bibliotecas, pacotes, etc.), configurações, sistema de arquivos mínimo. Assim, a aplicação funciona da mesma forma em qualquer máquina, seja no seu computador, em um servidor ou na nuvem.

O Docker permitem que desenvolvedores criem ambientes rápidos, padronizados e fáceis de compartilhar, eliminando a famosa frase “na minha máquina funciona”.

Diferença entre Máquina Virtual e Container

  • Máquina Virtual (VM): precisa de um sistema operacional completo para rodar cada aplicação.
  • Container: compartilha o kernel do sistema operacional, sendo mais leve, rápido e eficiente.
Funcionamento Docker
Funcionamento Docker

Vantagens do Docker:

  • Portabilidade: o mesmo container roda em qualquer sistema com Docker instalado.
  • Escalabilidade: facilita o aumento ou redução de serviços em produção.
  • Isolamento: cada container tem suas dependências e não interfere em outros serviços.
  • Agilidade: permite levantar um ambiente de desenvolvimento em segundos.

O que é Docker Compose?

O Docker Compose é uma ferramenta que permite definir e gerenciar múltiplos containers usando um único arquivo de configuração (docker-compose.yml).

Com ele, você pode orquestrar serviços como servidor web, banco de dados, cache, filas e ferramentas auxiliares em apenas um comando:

$docker-compose up -d

Principais Comandos do Docker

1- Gerenciamento de Imagens:

# Baixar uma imagem do Docker Hub
$docker pull nome_da_imagem

# Listar imagens baixadas
$docker images

# Remover uma imagem
$docker rmi nome_da_imagem

2- Gerenciamento de Containers:

# Criar e executar um container
$docker run nome_da_imagem

# Criar e executar em modo interativo
$docker run -it ubuntu bash

# Criar e executar em segundo plano (modo detached)
$docker run -d nome_da_imagem

# Nomear um container e mapear portas
$docker run -d --name meu_container -p 8080:80 nome_da_imagem

# Listar containers em execução
$docker ps

# Listar todos os containers (inclusive parados)
$docker ps -a

# Parar um container
$docker stop meu_container

# Iniciar um container parado
$docker start meu_container

# Reiniciar um container
$docker restart meu_container

# Remover um container
$docker rm meu_container

# Remover todos os containers
$docker container rm -f $(docker container ls -a -q)

# Remover todas as imagens
$docker image rm -f $(docker image ls -a -q)

# Remover todos os volumes
$docker volume rm -f $(docker volume ls -q)

# Remover todas as redes
$docker network rm -f $(docker network ls -q)

3- Logs e Acesso:

# Ver os logs de um container
$docker logs meu_container

# Entrar dentro de um container em execução
$docker exec -it meu_container bash

4- Volumes e Persistência:

# Listar volumes
$docker volume ls

# Criar um volume
$docker volume create meu_volume

# Usar volume ao rodar container
$docker run -v meu_volume:/caminho nome_da_imagem
5- Docker Compose (multi-containers)
# Subir os serviços definidos no $docker-compose.yml
$docker-compose up -d

# Parar os serviços
$docker-compose down

# Ver logs
$docker-compose logs -f

# Reiniciar apenas um serviço
$docker-compose restart nome_servico

Quer ver isso na prática?

Confira meu projeto no GitHub: um Docker Compose personalizável que permite gerenciar múltiplas versões de PHP e bancos de dados de forma simples e eficiente, além de um serviço redis e phpmyadmin para gerenciar o banco. Acesse o projeto no GitHub clicando aqui.

Rolar para cima