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
Conteúdo
O que é Docker?
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.
Docker | Máquina Virtual | |
SO | SO compartilhado entre containers | Novo SO para cada MV |
Segurança | Menos seguro porque o sistema operacional e o kernel são compartilhados | Mais seguro, pois as MVs não compartilham o sistema operacional |
Desempenho | Desempenho rápido mesmo com vários containers | Mais máquinas virtuais equivalem a desempenho menos estável |
Tempo de inicialização | Rápido (segundos) | Lento (minutos) |
Necessidades de memória | Leve | Requer muita memória |
Necessidades de armazenamento | Geralmente megabytes | Geralmente gigabytes |
Portabilidade | Fácil de implantar em diferentes ambientes | Difí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:
Kubernetes | Docker Swarm | |
Instalação | Difícil e longa | Fácil e rápida |
Escalabilidade | Escalonamento automático | Não oferece escala |
Criação de cluster | Fácil | Difícil |
Balanceamento de carga | Manual | Automático |
Monitoramento | Ferramentas de monitoramento integradas | Suporta 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?
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
Você pode usar o Docker com apenas alguns cliques, adquirindo um dos planos Docker VPS que a Hostinger oferece. Ao contrário dos servidores virtuais privados baseados em OpenVZ, os planos da Hostinger são baseados em KVM, que oferecem compatibilidade total com o Docker sem quaisquer limitações.
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.
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.