
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ápidos. Um 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.

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
# 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.