O que é Docker, e o que é Docker Compose

| Por Mauro J. Miranda

Tenho trabalhado com PHP desde 2006 e nesta gratificante carreira de engenheiro de software, já trabalhei com XAMPP, WAMPP, Vagrant e já instalei e configurei ambientes de desenvolvimento diretamente na maquina. Atualmente aqui na Solluzi uso o docker para todo o tipo de projeto, inclusive em produção, seguindo as boas práticas de infraestrutura.

Neste post quero apresentar o que é o Docker e o que é Docker Compose, qual a diferença do seu uso em diversos ambientes, principalmente o Linux e o Windows e apresento algumas ferramentas que podem ajudar no dia a dia.

Sem mais de longas, vamos para a definição da ferramenta:

O que é o Docker?

É uma plataforma de software que permite automatizar a implatação e o gerenciamento de aplicativos em containers. Um container é uma unidade de software leve e portatil que inclui tudo o que é necessário para executar um aplicativo: código, tempo de execução, bibliotecas, variáveis de ambiente e muito mais.

Ao utilizar o Docker, podemos empacotar um aplicativo com todas as suas dependências em um container, garantindo que ele funcionará da mesma maneira em qualquer ambiente, independentemente das diferenças de infraestrutura. Isso facilita a implantação consistente e confiável de aplicativos em ambientes de desenvolvimento, teste e produção.

Além disso, o Docker facilita escalabilidade horizontal, permitindo que aplicativos sejam distribuidos entre varios containers, em diferentes hosts, o que melhora o desempenho e a disponibilidade. Ele também simplifica a manutenção e o gerenciamento de aplicativos, pois os containers podem ser facilmente atualizados, replicados e movidos entre ambientes de computação.

O que é o Docker Compose?

É uma ferramenta que permite definir e gerenciar aplicativos Docker multi-contêiner em um único arquivo YAML. Com ele, você pode descrever os serviços, redes e volumes necessários para seu aplicativo em um formato simples e declarativo.

Basicamente, o Docker Compose simplifica a orquestração de vários containers Docker, facilitando a definição de como esses containers devem interagir entre si. Em vez de iniciar cada container manualmente com uma serie de comandos Docker separados, podemos definir todos os detalhes em um único arquivo YAML e, em seguida, usarmos um único comando para iniciar, parar ou gerenciar todo o aplicativo.

Por exemplo, podemos usar o Docker Compose para definir um aplicativo web, um container  para o banco de dados e talvez um contêiner para uma fila de mensagens. O Docker Compose lidaria com a criação, rede e gerenciamento de todos os containers, garantindo que funcionem juntos conforme especificado no arquivo YAML.

O Docker Compose é uma ferramenta útil para simplificar o desenvolvimento e implantação de aplicativos Docker Complexos, oferecendo uma maneira fácil de definir e gerenciar vários contêineres como um único aplicativo.

Qual a diferença em usar o docker no Linux Vs Windows?

Embora o Docker funcione em ambas as plataformas, Linux e Windows, existem algumas diferenças importantes no uso do Docker em cada uma delas:

  1. Kernel e Isolamento de Recursos: No Linux, o Docker utiliza recursos de isolamento fornecidos pelo kernel, como namespaces e cgroups, para criar containers. Isso resulta em um desempenho geralmente melhor e em uma integração mais estreita com o sistema operacional. No Windows, o Docker utiliza uma abordagem diferente, com tecnologias como Hyper-V ou o Windows Subsystem for Linux (WSL 2) para criar um ambiente de container. Isso pode introduzir alguma sobrecarga adicional e diferenças no comportamentos dos contêineres em comparação com o ambiente nativo do Linux.
  2. Compatibilidade de Imagens: As imagens de containers do Docker geralmente são especificas para uma determinada arquitetura de CPU e sistema operacional. Isso significa que as imagens criadas para linux não funcionarão nativamente no ambiente do Windows e vice-versa. No entanto, com o Windows Subsystem for Linux (WSL 2), é possível executar containers Linux no Windows, mas ainda há algumas diferenças em relação ao ambiente Linux nativo.
  3. Recursos do Sistema: O Docker no Linux pode aproveitar melhor os recursos do sistema, especialmente em termos de desempenho e escalabilidade, devido a integração mais profunda com o kernel. No entanto, o Docker no Windows pode ser mais adequado para desenvolvedores e organizações que dependem fortemente de aplicativos windows ou que preferem ambientes de desenvolvimento Windows.
  4. Ferramentas e Integrações: Existem diferenças nas ferramentas e integrações disponíveis para cada Docker em cada plataforma. Por exemplo, as ferramentas de linha de comando podem variar um pouco entre o Docker no Linux e no Windows, assim como as interfaces de gerenciamento gráfico e as soluções de orquestração, como o kubernetes.

O Docker pode ser usado em ambas as plataformas, é importante entender as diferenças entre o uso do Docker no Linux e no Windows, para garantir que se escolha a melhor opção para suas necessidades especificas.

Algumas ferramentas que podem facilitar o nosso dia-a-dia usando o Docker

Existem várias ferramentas que podem facilitar o uso do Docker e melhorar a eficiência no dia a dia. Aqui estão algumas delas:

  1. Docker Desktop: É uma ferramenta oficial do Docker que fornece uma interface gráfica fácil de usar para gerenciar containers Docker no seu Desktop, seja em sistemas Windows, macOS ou Linux. Ele inclui tudo que é preciso para começar a trabalhar rapidamente.
  2. Docker Swarm: é uma ferramenta de orquestração integrada ao Docker Engine, que permite implantar e gerenciar clusters de containers Docker. É uma maneira simples de escalar aplicativos e distribuí-los em vários hosts.
  3. Kubernetes: Embora não seja especificamente uma ferramenta do Docker, o Kubernetes é uma plataforma de orquestração de containers de código aberto que pode ser usada para gerenciar aplicativos contêinerizados em escala. Ele fornece recursos avançados de escalabilidade, automação e gerenciamento de aplicativos em contêineres.
  4. Portainer: É uma interface de usuário leve para o Docker que facilita a visualização, gerenciamento e monitoramento de seus contêineres e clusters Docker através de uma interface da web intuitiva.
  5. Docker Hub: O Docker Hub é um repositório público de imagens Docker que oferece uma ampla variedade de imagens prontas para uso, desde sistemas operacionais até aplicativos específicos. Ele permite que você compartilhe, descubra e reutilize imagens Docker facilmente.

Aqui na Solluzi usamos Containers em Docker com imagens pré-criadas para desenvolvimento de aplicações para nossos clientes e que facilitam a manutenção e escalabilidade das mesmas aplicações em todos os ambientes.

Faça bom uso na criação dos seus ambientes de desenvolvimento e/ou de produção.

No póximo artigo estarei mostrando a estrutura do nosso ambiente de desenvolvimento LAMP com Docker e Docker Compose.

Fique ligado.