Docker: O que é? Como usar? Serve para minha empresa?

Tempo de leitura: 15 minutos

Sem tempo para ler? Ouça este post ou baixe para ouvir mais tarde

Docker, container, conteinerização: essas são palavras utilizadas com frequência no universo da tecnologia. Mas você sabe de fato qual é a aplicação prática dessas ferramentas? Valioso para otimizar o ambiente de TI de muitas empresas, o Docker traz a grande vantagem de aliar inovação e adaptabilidade às diferentes demandas de cada negócio. 

Com o objetivo de responder às dúvidas sobre o assunto e traçar um entendimento geral desse recurso poderoso para DevOps, DEVs e SysAdmins, elaboramos o conteúdo a seguir. Acompanhe! 

Docker: o que é? 

docker
Créditos: Annie Spratt

Antes de começarmos a explorar o tema, é importante ressaltar que o termo “docker” pode compreender alguns conceitos distintos: 

  • a tecnologia Docker em si;
  • a comunidade envolvida na manutenção da ferramenta;
  • a empresa Docker Inc. 

Embora, neste artigo, nosso objetivo seja focar na tecnologia e nos seus benefícios, vale a pena esclarecer também os outros tópicos. Vamos lá: 

O Docker enquanto tecnologia 

Dito de forma direta, o Docker é uma forma de virtualizar aplicações no conceito de “containers”, trazendo da web ou de seu repositório interno uma imagem completa, incluindo todas as dependências necessárias para executar sua aplicação. Sim, você leu certo: todas as dependências, incluindo as referentes ao sistema operacional, são consideradas. 

É interessante mencionar que a tecnologia surgiu como um projeto de software de código aberto. Nessa perspectiva, cada container criado atua como uma máquina virtual flexível. Com isso, a equipe de TI pode migrar, copiar ou implementar ambientes de trabalho com facilidade, garantindo melhor desempenho para as aplicações baseadas em nuvem

A comunidade Docker 

É comum que os softwares de código aberto contem com uma comunidade de profissionais de TI para discutir pontos de melhoria e manutenção, certo? 

Com o Docker, não é diferente. A tecnologia possui um grupo de voluntários que discutem a criação de recursos e atualizações contínuas para o recurso em fóruns online. Com o papel desses profissionais, é possível manter a ferramenta em constante evolução. 

A Docker Inc. 

Além da comunidade open source, existe uma empresa totalmente voltada ao suporte e à manutenção da tecnologia. Trata-se da Docker Inc., que auxilia o grupo de voluntários no apoio às melhorias do sistema. 

Confira também  ? 6 tendências de cloud computing que você precisa conhecer 

Como o Docker funciona na prática?  

Com o objetivo de permitir a execução independente dos processos, o Docker se utiliza do kernel (núcleo) do Linux e seus recursos – a exemplo do namespaces e do Cgroups – para isolar essas operações. 

Nessa perspectiva, o propósito dos containers é justamente este: criar a independência para permitir a execução de múltiplas aplicações e processos de forma separada. A partir daí, é possível ter um melhor aproveitamento da infraestrutura, assim como garantir a mesma segurança que se teria em sistemas isolados. 

É importante acrescentar que o Docker, tal como outros recursos de container, oferece um modelo de implantação baseado em imagem. Essa funcionalidade facilita o compartilhamento de serviços, aplicações e todas as suas dependências, como já ressaltamos acima. 

Vale notar, ainda, que o Docker também conta com um recurso de automação para implantar as aplicações no próprio ambiente do container. Dessa forma, o ambiente de TI ganha em rapidez e controle sobre as diferentes versões e distribuições dos serviços. 

Docker e Máquina Virtual (VM): qual é a diferença? 

A essa altura, é provável que essa dúvida tenha surgido! Pois bem, é bem simples: uma VM (máquina virtual) obriga a equipe a gerenciar todo o ambiente relacionado ao servidor. Isso abrange: 

  • a configuração de sistema operacional; 
  • atualizações do sistema operacional;
  • patches de segurança; 
  • patches da aplicação;
  • backup do sistema operacional; 
  • backup da aplicação.

Que tal conferir também um vídeo sobre o assunto? ?

Com o Docker, temos as mesmas preocupações, mas de forma reduzida. De fato, o uso da tecnologia proporciona agilidade em todos os itens da lista acima, promovendo uma vantagem que muitos SysAdmin não têm: um ambiente descartável, escalável e, o melhor de tudo, seguindo o mesmo padrão de configuração. 

Quando pensamos na ótica operacional de uma VM, sabemos que o processo envolve uma maior capacidade de hardware, além de todo o tempo de preparação. Por sua vez, o uso de containers do Docker reduz drasticamente o tempo e o espaço necessários, a depender da aplicação escolhida. 

Na imagem abaixo, podemos visualizar a diferença de arquitetura nos usos de containers e VMs: 

 

docker

Analisando o diagrama, podemos perceber a principal diferença da arquitetura do ambiente: ao utilizarmos o ambiente com VMs (ilustração à esquerda) temos um servidor completo para cada aplicação. Cada aplicativo possui um sistema de operação, com todas as atividades administrativas relacionadas ao OS e às respectivas aplicações.  

Na imagem referente ao Docker Engine (ilustração à direita), já não temos a camada de sistema operacional para cada app, pois ela é compartilhada entre todos os containers pelo Docker. Dessa forma, não há preocupação administrativa sobre o OS para cada app.

Como tudo no ambiente de TI, os riscos de falha ou de um “crash” são inevitáveis e inegáveis. Entretanto, se sua aplicação usa um container, efetuar um novo “pull” da imagem resolverá o problema! Nessa situação, uma nova imagem completa é baixada sem a falha da imagem anterior – não é preciso executar complexos troubleshooting sobre o incidente, mas apenas descartar o container falho e substituí-lo por um novo. 

Você também pode se interessar por este conteúdo: ?6 desafios de dados na nuvem resolvidos para administradores de banco de dados

Afinal, quais são as vantagens da tecnologia? 

Ágil implantação 

Sabemos o quanto a produtividade e a agilidade nas operações são valiosas para o setor de TI. Com o Docker, essa otimização pode ser facilmente alcançada – isso porque os containers podem ser transportados de forma simples entre os diversos ambientes. 

A partir daí, as novidades da área de trabalho são disponibilizadas rapidamente para os usuários, poupando o tempo e os esforços da equipe.

Maior disponibilidade do sistema

Além da agilidade, a virtualização diferenciada promovida pelo Docker também possibilita mais espaço livre, uma vez que há o compartilhamento do sistema operacional e de outros componentes. 

Em consequência, a disponibilidade e a performance do sistema são maximizadas, possibilitando que outros programas e aplicações sejam executados.

Reversibilidade dos containers 

Quando consideramos a alta ocorrência de falhas humanas no ambiente de trabalho (o que pode acontecer mesmo entre os profissionais mais capacitados e experientes), ter a possibilidade de reverter as ações é fundamental, corrigindo erros e brechas. 

Nesse sentido, as camadas do Docker permitem exatamente isto: caso as mudanças efetuadas não saírem como o esperado, é só retornar o container para sua versão prévia e reiniciar o trabalho.

Abordagem baseada em microsserviços 

Há uma estratégia do Docker que traz um impacto extremamente significativo para o time de TI: a possibilidade de interromper somente uma parte do software em execução. 

Com o recurso, não é preciso desativar todas as funcionalidades de uma ferramenta para fazer ajustes em uma pequena parcela da mesma. 

Trata-se da abordagem baseada em microsserviços, que aumenta a agilidade e aumenta a disponibilidade do ambiente de trabalho. Aliada a ela, há também a arquitetura orientada a serviço (SOA), que permite compartilhar os recursos entre diversas aplicações com facilidade. 

Camadas de controle para as versões de imagem 

Uma informação importante é que cada imagem Docker é composta por um conjunto de camadas. Sempre que há modificações nesse arquivo, uma nova camada é criada. 

Nesse contexto, tais camadas são reutilizadas para “fabricar” novos containers, agilizando todo o processo e liberando espaço no sistema. Além disso, o recurso conta com um controle eficiente de versões, melhorando o gerenciamento dos dados e da infraestrutura como um todo. 

O Docker é uma boa pedida para minha empresa? 

As aplicações de muitos negócios ainda são baseadas em bare metal (execução diretamente no hardware), demandando uma grande equipe para a gerência. Com isso, as organizações frequentemente contam com até 3 vezes mais SySAdmins do que é necessário para administrar seu ambiente com a performance e disponibilidade desejadas. 

Nesse cenário, a aderência gerada por uma adaptação à tecnologia Docker pode ser valiosa para as empresas, possibilitando aos SySAdmin, DevOps e Devs mais tempo para a produção de melhorias no ambiente e na estrutura em si, ao invés de dedicarem seus esforços para manter as VMs à moda antiga.

Aqui, vale destacar que não estamos “levantando uma bandeira” para afirmar que todo o seu data center deve ser baseado em containers – na verdade, estamos apontando uma nova possibilidade de utilização. Nem todas as aplicações são compatíveis com a tecnologia, que exige determinados cuidados de administração.

Ao longo do tempo nessa jornada no mundo DevOps, presenciamos diversos colegas utilizando containers da forma errada, julgando que as ferramentas foram feitas para ser tão resilientes quanto seu cluster local baseado em tecnologias de ponta e afins. 

Esse, de fato, é o maior engano neste assunto: em seu core, os containers são feitos para serem descartáveis. Caso um deles apresente algum problema, é só descartá-lo e fazer o “pull” (download) de uma nova imagem. Isso fará com que a aplicação volte a ser íntegra. 

Mas e quanto aos dados armazenados nesse container? 

Bem, infelizmente, se o administrador do ambiente não pensou nesse detalhe, tudo o que foi armazenado no container será excluído juntamente com ele! 

Nessa perspectiva, existem formas de efetuar o mapeamento de pastas da máquina host do container, ou seja, é possível mapear uma pasta para arquivos de configuração da aplicação e outra pasta para o arquivo de dados, por exemplo. Dessa forma, se algo acontecer com seu ambiente “conteinerizado”, todas as informações importantes serão mantidas no host, que estará pronto para ser utilizado por novos containers. 

Lembre-se de que a intenção é entregar mais agilidade e escalabilidade, agregando uma camada extra de complexidade ao ambiente. Afinal, você terá um “virtualizador” dentro de sua máquina já virtualizada, o que vai gerar uma administração extra, uma estratégia de backup e, ainda, a possível implantação de um cluster para cobrir a situação caso haja falhas no servidor host

Conclusão 

Com a indicação e a implementação adequada, a tecnologia Docker garante muito mais flexibilidade ao dia a dia da TI, simplificando os processos de desenvolver, alterar e distribuir recursos. 

É preciso, no entanto, ficar atento às peculiaridades e às demandas da ferramenta, que requer cuidados específicos de gerenciamento. 

E então, tirou suas dúvidas? Estamos à disposição para ajudá-los no uso de containers ou na implantação da tecnologia no seu negócio. Para ficar por dentro de mais dicas e inovações importantes do universo da TI, assine agora nossa newsletter! 

 

 

Paulo Frugis Neto

Arquiteto de Soluções Cloud Computing | P.O  | Tech lead 

Nosso objetivo é proporcionar a solução mais eficaz para as demandas de nossos clientes, garantindo o uso das melhores tecnologias para a conquista de resultados expressivos e sustentáveis.

Newsletter

cadastre-se na nossa newsletter e receba conteúdos no seu e-mail