O Que é Docker e Como Ele Funciona? – Docker Explicado

Se você tem um aplicativo ou serviço e deseja que ele funcione em diferentes sistemas como VPSs ou máquinas dedicadas sem problemas, considere usar containers. Uma das plataformas de containers mais populares é o Docker, embora nem todos saibam o que é e como funciona.

Neste tutorial, explicaremos o que é Docker, para que serve, como ele funciona e como ele difere de máquinas virtuais (VMs) e sistemas, como Kubernetes e Jenkins. Também analisaremos os prós e contras do Docker e listaremos seus casos de uso mais populares.

Baixar Glossário Completo de Desenvolvimento Web

O Docker é um software de código aberto usado para implantar aplicativos dentro de containers virtuais. A conteinerização permite que vários aplicativos funcionem em diferentes ambientes complexos. Por exemplo: o Docker permite executar o WordPress em sistemas Windows, Linux e macOS, sem problemas.

Docker vs Máquina Virtual

Embora o Docker e as máquinas virtuais tenham um propósito semelhante, seu desempenho, portabilidade e suporte a sistemas operacionais diferem significativamente.

A principal diferença é que os containers do Docker compartilham o sistema operacional do host, enquanto as máquinas virtuais também têm um sistema operacional convidado sendo executado no sistema host. Esse método de operação afeta o desempenho, as necessidades de hardware e o suporte do SO. Confira a tabela abaixo para uma comparação detalhada.

DockerMáquina Virtual
SOSO compartilhado entre containersNovo SO para cada MV
SegurançaMenos seguro porque o sistema operacional e o kernel são compartilhadosMais seguro, pois as MVs não compartilham o sistema operacional
DesempenhoDesempenho rápido mesmo com vários containersMais máquinas virtuais equivalem a desempenho menos estável
Tempo de inicializaçãoRápido (segundos)Lento (minutos)
Necessidades de memóriaLeveRequer muita memória
Necessidades de armazenamentoGeralmente megabytesGeralmente gigabytes
PortabilidadeFácil de implantar em diferentes ambientesDifícil portar uma MV para outro sistema

Embora a tecnologia de container do Docker seja a mais importante na maioria dos aspectos, as máquinas virtuais são mais seguras porque o sistema operacional é mantido independente do hardware.

Docker vs Kubernetes e Jenkins

Na seção a seguir, discutiremos como o Docker se compara ao Kubernetes e ao Jenkins e explicaremos as diferenças entre eles.

Comparando o Kubernetes com o Docker

Enquanto o Docker é uma plataforma para construir e executar containers, o Kubernetes é um sistema de orquestração de containers de código aberto. Esses dois sistemas não podem ser comparados diretamente — o Docker é responsável pela criação de containers e o Kubernetes os gerencia em grande escala.

No entanto, o Docker oferece seu próprio sistema de orquestração chamado Docker Swarm. Aqui está uma tabela com uma comparação do Kubernetes e do Docker Swarm:

KubernetesDocker Swarm
InstalaçãoDifícil e longaFácil e rápida
EscalabilidadeEscalonamento automáticoNão oferece escala
Criação de clusterFácilDifícil
Balanceamento de cargaManualAutomático
MonitoramentoFerramentas de monitoramento integradasSuporta apenas ferramentas de monitoramento de terceiros

Comparando o Docker com o Jenkins

Não é possível comparar o Jenkins com o Docker porque são produtos que atendem a propósitos totalmente diferentes.

Jenkins é um sistema de automação central para o modelo de desenvolvimento CI/CD (integração contínua e entrega contínua) em que os desenvolvedores enviam pequenos pedaços de código continuamente para evitar erros de mesclagem. O Docker, por outro lado, é um sistema de conteinerização.Embora esses sistemas não possam ser comparados, você pode usar ambos para obter os melhores resultados. Use o Jenkins para agendar tarefas diferentes e o Docker para isolar os trabalhos uns dos outros com a ajuda de containers.

Entendendo os Containers do Docker

Usar containers do Docker poupa aos usuários o incômodo de solucionar possíveis problemas de compatibilidade entre sistemas. Isso porque, com o Docker, um software é executado da mesma forma em todos os ambientes.

O Que é um Container Docker?

Um container Docker é um pacote de software com todas as dependências necessárias para executar um aplicativo específico. Todas as configurações e instruções para iniciar ou parar containers são ditadas pela imagem do Docker. Sempre que um usuário executa uma imagem, um novo container é criado.

É fácil gerenciar containers com a ajuda da API do Docker ou da interface de linha de comando (ILC). Se forem necessários vários containers, os usuários podem controlá-los com a Ferramenta de composição do Docker.

Como o Docker Funciona?

Arquitetura do Docker

A arquitetura do Docker consiste em quatro componentes principais junto com os containers do Docker que abordamos anteriormente.

  • Cliente Docker– o principal componente para criar, gerenciar e executar aplicativos em container. O cliente Docker é o principal método de controle do servidor Docker por meio de uma ILC, como Prompt de Comando (Windows) ou Terminal (macOS, Linux).
  • Servidor Docker– também conhecido como o daemon do Docker. Ele aguarda as solicitações da API REST feitas pelo cliente Docker e gerencia imagens e containers.
  • Imagens do Docker– instrua o servidor Docker com os requisitos sobre como criar um container Docker. As imagens podem ser baixadas de sites como Docker Hub. A criação de uma imagem personalizada também é possível — para isso, os usuários precisam criar um Dockerfile e passá-lo para o servidor. Vale a pena notar que o Docker não limpa nenhuma imagem não utilizada, então os usuários precisam excluir dados de imagem eles mesmos, antes que acabe com muitas delas.
  • Registro do Docker– um aplicativo do lado do servidor de código aberto usado para hospedar e distribuir imagens do Docker. O registro é extremamente útil para armazenar imagens localmente e manter controle total sobre elas. Como alternativa, os usuários podem acessar o Docker Hub mencionado acima – o maior repositório mundial de imagens do Docker.

Dica do Especialista

Para usar o Docker na Hostinger, basta comprar um VPS KVM e instalá-lo em sua distribuição Linux, como Ubuntu ou CentOS. Ao contrário dos servidores virtuais privados baseados em OpenVZ, os VPSs KVM oferecem compatibilidade irrestrita com o Docker, sem quaisquer limitações.

Editor

Mantas S.

Engenheiro de Disponibilidade do Site

Os Prós e Contras do Docker

Embora o Docker tenha muitas vantagens, ele fica aquém em alguns aspectos. Nesta seção, veremos os principais prós e contras do software.

Vantagens do Docker

  • Portabilidade – o principal atrativo do Docker é sua portabilidade. Ele permite que os usuários criem ou instalem um aplicativo complexo em uma máquina e tenham certeza de que funcionará nele. Os containers do Docker incluem tudo o que um aplicativo precisa com pouca ou nenhuma entrada do usuário.
  • Automação – com a ajuda de cron jobs e containers Docker, os usuários podem automatizar seu trabalho facilmente. A automação ajuda os desenvolvedores a evitar tarefas tediosas e repetitivas, além de economizar tempo.
  • Comunidade– O Docker tem um canal dedicado no Slack, fórum da comunidade e milhares de colaboradores em sites de desenvolvedores como o StackOverflow. Além disso, existem mais de 9 milhões de imagens de container hospedadas no Docker Hub.

Desvantagens do Docker

  • Velocidade– mesmo que executar um aplicativo por meio de um container do Docker seja mais rápido do que em uma máquina virtual, ainda é consideravelmente mais lento do que executar aplicativos nativamente em um servidor físico.
  • Difícil de usar– O Docker não se destina a executar aplicativos que exijam uma interface gráfica do usuário (GUI). Isso significa que os usuários precisam estar familiarizados com a linha de comando e realizar todas as ações nela. A curva de aprendizado íngreme, as advertências específicas do sistema operacional e as atualizações frequentes tornam o domínio do Docker um desafio. Mesmo que você sinta que conhece o Docker de dentro para fora, ainda há uma orquestração a ser considerada, adicionando outro nível de complexidade.
  • Segurança– O Docker é executado no sistema operacional do host. Isso significa que qualquer software malicioso oculto em containers pode chegar à máquina host.

Dica do especialista

Não baixe imagens do Docker de fontes desconhecidas, pois elas podem conter malware.

Editor

Egidijus N.

Chefe de Cibersegurança

Casos de Uso do Docker

O Docker tem uma ampla gama de aplicações. Nesta seção, veremos três casos de uso comuns do Docker e explicaremos como você pode se beneficiar dele.

Para Experimentar o Novo Software

Com o Docker, você pode experimentar um novo software sem instalá-lo manualmente. O Docker também é útil se você precisar ter um software pronto rapidamente. Por exemplo, configurar um servidor MySQL é um processo longo e tedioso. Com o Docker, é necessário apenas um comando via ILC (Interface de Linha de Comando) para fazer isso.

Para Saber Mais Sobre ILC

Embora o Docker possa ser executado em todos os tipos de máquinas, ele foi projetado principalmente para Linux. Portanto, recomendamos configurá-lo em um sistema baseado em Linux. Ele fornecerá a você uma excelente oportunidade de aprender mais sobre administração do sistema, interface de linha de comando e scripts.

Para Reduzir o Risco de Incidentes

Em caso de falha de hardware, os usuários podem reverter rapidamente quaisquer alterações se tiverem uma imagem do Docker pronta. Eles só precisam importar o backup de imagem para uma nova máquina e o Docker fará o resto. Os backups de imagem do Docker também são benéficos quando os desenvolvedores desejam reverter para uma versão anterior de um software específico devido a bugs ou incompatibilidade.

Conclusão

Desenvolver um aplicativo é um desafio e garantir que ele funcione em todos os ambientes é um marco ainda maior. Os containers do Docker resolvem esse problema oferecendo aos desenvolvedores uma maneira de portar software facilmente.

Neste artigo, analisamos as diferenças entre as máquinas virtuais e o Docker, explicamos como funciona e para que serve o Docker e o comparamos com sistemas populares como Kubernetes e Jenkins. Também discutimos os prós e contras do Docker e abordamos alguns de seus casos de uso.

Esperamos que este artigo tenha ajudado você a aprender mais sobre o que é Docker. Se você tiver alguma dúvida ou sugestão, conte para a gente na seção de comentários abaixo.

O Que é Docker – Perguntas Frequentes

Docker vs Motor Docker

Docker é o nome da plataforma, enquanto o Docker Engine é uma tecnologia de container de código aberto que consiste em um servidor Docker (daemon), cliente e APIs. As pessoas também podem confundir o software com o cliente Docker porque também é chamado de Docker, apenas em letras minúsculas.

Docker Community Edition vs Enterprise Edition

Docker CE e EE são 2 versões diferentes do Docker. O primeiro é gratuito e o segundo um serviço premium. Ambos oferecem os mesmos recursos e funcionalidades principais, mas funcionam em sistemas operacionais diferentes. Se você não estiver criando software em grande escala, recomendamos optar pelo CE.

O Docker é difícil de Aprender?

Pode demorar um pouco para dominar o Docker, embora o lançamento do seu primeiro container não demore muito. Para começar, o Docker fornece a seus usuários um aplicativo Docker Desktop fácil de usar e oferece documentação abrangente para usuários iniciantes e intermediários.

Author
O autor