O que é Docker?

Imagem com o logotipo do Docker, representado por uma baleia azul carregando contêineres, destacando um conceito visual que remete ao empacotamento e transporte eficiente de aplicações em contêineres. Entenda 'o que é Docker' e como ele transforma o desenvolvimento de software ao oferecer portabilidade e eficiência.

O Docker é uma plataforma de código aberto (open source) que utiliza a tecnologia de containers para simplificar o desenvolvimento, a implantação e a execução de aplicações em ambientes computacionais isolados.

Neste artigo, vamos entender o que é um container, os principais conceitos relacionados a Docker e o impacto que essa plataforma tem no desenvolvimento de softwares e na hospedagem de sistemas.

Confira!

Sumário

O que é um Container?

Um Container é uma forma de virtualização em nível de sistema operacional.

Diferentemente da virtualização por hipervisor (ex: VMware e Virtual Box) que cria máquinas virtuais completas com sistemas operacionais totalmente independentes, containers compartilham o kernel do sistema operacional do host, permitindo que múltiplas instâncias isoladas do espaço de usuário sejam executadas no mesmo ambiente.

Plataformas como o Docker reduzem drasticamente o overhead de recursos e podem acelerar o tempo de inicialização em comparação com máquinas virtuais.

Diagrama representativo sobre a conteinerização.
Fonte: The Docker Book | James Turnbull

Para que serve o Docker?

O Docker é uma ferramenta poderosa que oferece isolamento por meio de containers.

Os containers criam ambientes computacionais isolados para testes e servem como “blocos de construção” consistentes e reutilizáveis para serviços.

Aqui estão alguns exemplos de como o Docker pode ser utilizado:

Ambiente de Testes

  • Desenvolvedores podem criar, executar e compartilhar containers Docker em seus ambientes locais.
  • Containers construídos no ambiente de desenvolvimento podem ser promovidos para testes e, posteriormente, para produção, garantindo consistência entre os estágios.

Self-Hosting

Execução de serviços e aplicações independentes

  • Permite rodar serviços e aplicações de forma consistente em diferentes ambientes.
  • Ideal para arquiteturas orientadas a serviços e implantações baseadas em microserviços.

Desenvolvimento de Aplicações

Implantações de Alta Performance

Testes isolados em integrações contínuas (CI)

  • Ferramentas como Jenkins CI utilizam o Docker para criar instâncias isoladas para execução de testes.
  • Reduz o risco de interferências entre testes e melhora a confiabilidade do processo de CI.

Construção e teste de arquiteturas complexas

  • Permite replicar e testar aplicações complexas em um host local antes de implantá-las em ambientes de produção.

Criação de infraestruturas multiusuário no estilo Platform-as-a-Service (PaaS)

  • Docker pode ser a base para construir plataformas que suportam múltiplos usuários e serviços.

Ambientes leves e independentes para aprendizado e desenvolvimento

  • Ideal para criar sandboxes isolados para:
  • Testar tecnologias como shells Unix.
  • Aprender e ensinar linguagens de programação.
  • Realizar experimentos sem impactar o sistema principal.

Aplicações SaaS (Software como Serviço)

  • Docker pode ser utilizado para criar e implantar aplicações SaaS, permitindo gerenciamento eficiente e escalabilidade.

Implantações de alta performance e hiperescaláveis

  • Containers são extremamente leves, permitindo que múltiplos hosts sejam configurados rapidamente para atender a demandas em grande escala.

Como funciona o Docker?

O Docker introduz um mecanismo de implantação de aplicações sobre um ambiente de execução baseado em containers virtualizados.

Esse mecanismo proporciona um fluxo de trabalho eficiente que facilita a transição do código do ambiente de desenvolvimento local para o ambiente de testes e para a produção.

Arquitetura Docker

O Docker utiliza uma arquitetura baseada no modelo cliente-servidor.

O cliente Docker se comunica com o servidor docker (daemon), responsável por realizar as operações mais complexas, como criar, executar e distribuir contêineres Docker.

O cliente e o daemon Docker podem ser executados no mesmo sistema ou de forma remota, onde o cliente se conecta a um daemon localizado em outra máquina.

A comunicação entre cliente e daemon utiliza uma API REST, que pode operar via UNIX sockets ou interfaces de rede.

Cliente Docker

O cliente Docker (docker) é a principal interface utilizada pelos usuários para interagir com o Docker.

Quando você executa comandos como docker run, o cliente envia essas instruções ao daemon (dockerd), que as executa.

O cliente Docker utiliza a API Docker e é capaz de se conectar a vários daemons simultaneamente.

Servidor Docker (Daemon)

O daemon Docker (dockerd) escuta requisições da API Docker e gerencia objetos do Docker, como imagens, contêineres, redes e volumes.

Além disso, o daemon pode se comunicar com outros daemons para gerenciar serviços Docker em um ambiente distribuído.

Objetos Docker

Ao utilizar o Docker, você estará criando e manipulando objetos como imagens, contêineres, redes, volumes, plugins e outros.

Imagens

Uma imagem é um modelo de leitura (read-only) com instruções para criar um contêiner Docker.

Geralmente, uma imagem é baseada em outra imagem existente, com algumas personalizações. Por exemplo, é possível criar uma imagem baseada na imagem ubuntu, adicionando o servidor web Apache, a aplicação que você deseja executar e as configurações necessárias para que ela funcione.

Você pode criar suas próprias imagens ou usar aquelas disponibilizadas por outros usuários em registros públicos.

Para construir uma imagem, é necessário criar um arquivo Dockerfile.

O Dockerfile utiliza uma sintaxe simples para definir os passos necessários para criar e executar a imagem.

Cada instrução no Dockerfile gera uma camada na imagem.

Ao modificar o Dockerfile e reconstruir a imagem, apenas as camadas alteradas são recriadas. Isso torna as imagens leves, pequenas e rápidas, especialmente em comparação com outras tecnologias de virtualização.

Containers

Um contêiner é uma instância executável de uma imagem.

É possível criar, iniciar, parar, mover ou excluir um contêiner utilizando a API Docker ou o Docker CLI.

Você também pode conectar um contêiner a uma ou mais redes, anexar armazenamento ou criar uma nova imagem com base no estado atual do contêiner.

Por padrão, os contêineres são bem isolados uns dos outros e do sistema anfitrião (host). É possível configurar o nível de isolamento de redes, armazenamento e outros subsistemas, dependendo das necessidades.

Um contêiner é definido pela sua imagem e pelas opções de configuração fornecidas ao criá-lo ou iniciá-lo.

Quando um contêiner é removido, qualquer alteração no seu estado que não esteja armazenada em um volume persistente será perdida.

Registros

Um registro Docker armazena imagens Docker.

O Docker Hub é um registro público padrão, disponível para qualquer usuário, onde o Docker busca imagens por padrão.

Além disso, é possível configurar e operar um registro privado.

Comandos como docker pull ou docker run fazem com que o Docker baixe as imagens necessárias do registro configurado.

Por outro lado, o comando docker push permite enviar suas imagens para o registro configurado.

Instalando o Docker

Compartilhe:
Facebook
LinkedIn
WhatsApp
Comentários
Artigos Relacionados
Sobre o Autor

Acadêmico de Engenharia de Computação certificado em Cabeamento Estruturado pela CommScope.

Redes Sociais
Entre em contato com nosso Departamento de Engenharia.

Preencha o formulário abaixo e nossa equipe entrará em contato para oferecer a solução mais adequada para suas demandas.