O mundo da tecnologia está constantemente evoluindo. Dessa forma, a todo momento surgem novas ideias que aprimoram os métodos utilizados em TI. Como exemplo, podemos citar o Docker Container, que pode nos trazer vários benefícios.

Veja também o que é uma rede VPN!

Muitas empresas optam por essa nova modalidade pois os “containers” trazem novas alternativas de possibilidades. Portanto, por serem ambientes isolados e portáveis, os desenvolvedores podem empacotar aplicações com bibliotecas e links necessários. Dessa forma, a empresa terá mais eficiência no trabalho e a simplificação da implantação.

De qualquer maneira, continue lendo a matéria para saber tudo sobre Docker Container. Confira:

O que é o Docker & Docker Container?

O que é o Docker?

O Docker é uma plataforma de contêiner que empacota seu aplicativo e todas as suas dependências juntas na forma de um contêiner de docker para garantir que seu aplicativo funcione perfeitamente em qualquer ambiente.

O que é o Docker Container? 

O Docker Container é uma unidade padronizada que pode ser criada em tempo real para implantar um aplicativo ou ambiente específico. Portanto, ele pode ser um contêiner Ubuntu, um contêiner CentOs, etc. para preencher completamente o requisito do ponto de vista do sistema operacional. Além disso, poderia ser um contêiner orientado a aplicativos como o contêiner CakePHP ou um contêiner Tomcat-Ubuntu etc.

Entendendo através de um exemplo

Uma empresa precisa desenvolver um aplicativo Java. Para isso, o desenvolvedor configurará um ambiente com o servidor tomcat instalado.  Depois que o aplicativo é desenvolvido, ele precisa ser testado pelo testador. Agora, o testador configurará novamente o ambiente do tomcat do zero para testar o aplicativo. Uma vez concluído o teste do aplicativo, ele será implantado no servidor de produção. Novamente, a produção precisa de um ambiente com o tomcat instalado, para que possa hospedar o aplicativo Java. Se você vir a mesma configuração do ambiente tomcat três vezes. Existem alguns problemas listados abaixo com esta abordagem:

  1. Há perda de tempo e esforço;
  2. Pode haver uma incompatibilidade de versões em diferentes configurações, ou seja, o desenvolvedor e o testador podem ter instalado o tomcat 7. No entanto, o administrador do sistema instalou o tomcat 9 no servidor de produção.

Como o Docker Container pode ajudar nisso?

Nesse caso, o desenvolvedor criará uma imagem da janela de encaixe tomcat (uma imagem nada mais é do que um modelo para implantar vários contêineres das mesmas configurações) usando uma imagem de base como o Ubuntu, que já existe no Docker Hub (o Hub tem algumas imagens de base disponível gratuitamente). Agora, essa imagem pode ser usada pelo desenvolvedor, pelo testador e pelo administrador do sistema para implantar o ambiente do tomcat. É assim que este contêiner resolve o problema.

No entanto, agora você pensaria que isso também pode ser feito usando máquinas virtuais. Entretanto, há problemas se você optar por usar uma máquina virtual. Vamos ver uma comparação entre os dois para entender melhor isso.

Docker Container: o que é e como funciona? - Foto: Reprodução/Edureka
Docker Container: o que é e como funciona? – Foto: Reprodução/Edureka

Deixe-me mostrá-lo como funciona o diagrama acima. Máquina virtual e Docker Container são comparados nos três parâmetros a seguir:

  • Tamanho – este parâmetro compara a Máquina Virtual e o Docker Container nos recursos que ele vão ter que utilizar;
  • Inicialização – Este parâmetro será comparado com base no tempo de inicialização;
  • Integração – Este parâmetro compara sua capacidade de integração com outras ferramentas.

Seguirei a ordem acima na qual os parâmetros estão listados. Portanto, o primeiro parâmetro seria “Tamanho”.

Tamanho

A imagem a seguir explica como a Máquina Virtual e o Docker Container utilizam os recursos alocados a eles.

Docker Container: o que é e como funciona? - Foto: Reprodução/Edureka
Docker Container: o que é e como funciona? – Foto: Reprodução/Edureka

Considere uma situação representada na imagem acima. Eu tenho um sistema host com 16 Gigabytes de RAM e tenho que executar 3 máquinas virtuais nele. Para executar as máquinas virtuais em paralelo, preciso dividir minha RAM entre as máquinas virtuais. Suponha que eu o aloque da seguinte maneira:

  • 6 GB de RAM para a primeira máquina;
  • 4 GB de RAM para a segunda máquina;
  • 6 GB para a terceira máquina.

Nesse caso, não ficarei mais com RAM, mesmo que o uso seja:

  • Primeira máquina usa apenas 4 GB de RAM e 2 GB não são utilizados;
  • Segunda máquina usa apenas 3 GB de RAM e 1 GB  não é utilizado;
  • Terceira máquina usa apenas 2 GB de RAM e 4 GB não são utilizados.

Isso ocorre porque uma vez que um pedaço de memória é alocado para uma Máquina Virtual, essa memória é bloqueada e não pode ser realocada. Vou desperdiçar 7 GB (2 GB + 1 GB + 4 GB) de RAM no total e, portanto, não consigo configurar uma nova máquina virtual. Esse é um problema importante, porque a RAM é um hardware caro.

Evitando esse problema com o Docker Container

Se eu usar o Docker, minha CPU alocará exatamente a quantidade de memória necessária ao contêiner.

  • Primeiro contêiner usará apenas 4 GB de RAM e não haverá desperdício;
  • Segundo contêiner usará apenas 3 GB de RAM e não haverá desperdício;
  • Terceiro contêiner usará apenas 2 GB de RAM e não haverá desperdício.

Como não há memória alocada (RAM) que não seja usada, economizo 7 GB (16 – 4 – 3 – 2) de RAM usando o Docker Container. Dessa forma, posso até criar contêineres adicionais a partir da RAM restante e aumentar minha produtividade.

Portanto, aqui o Docker Container é claramente melhor que a máquina virtual, pois posso usar com eficiência meus recursos conforme minha necessidade.

Inicialização

Docker Container: o que é e como funciona? - Foto: Reprodução/Edureka
Docker Container: o que é e como funciona? – Foto: Reprodução/Edureka

Quando se trata de inicialização, a Máquina Virtual leva muito tempo para inicializar porque o sistema operacional convidado precisa começar do zero, o que carregará todos os binários e bibliotecas. Isso consome tempo e provará um alto custo quando for necessário o início rápido de aplicativos. No caso do Docker Container, como o contêiner é executado no sistema operacional host, você pode economizar um tempo precioso de inicialização. Essa é uma clara vantagem sobre a máquina virtual.

Considere uma situação em que desejo instalar duas versões diferentes do Ruby no meu sistema. Se eu usar a Máquina Virtual, precisarei configurar 2 Máquinas Virtuais diferentes para executar as diferentes versões. Cada um deles terá seu próprio conjunto de binários e bibliotecas enquanto estiver sendo executado em diferentes sistemas operacionais convidados. Considerando que, se eu usar o Docker Container, mesmo criando dois contêineres diferentes, onde cada contêiner terá seu próprio conjunto de binários e bibliotecas, eu os executarei no meu sistema operacional host. A execução direta no meu sistema operacional Host torna meus Docker Containers leves e rápidos.

Portanto, o Docker Container ganha novamente novamente da máquina virtual com base no parâmetro Startup.

Agora, finalmente, vamos considerar o parâmetro final, ou seja, Integração.

Integração

Talvez seja possível a integração de diferentes ferramentas usando a Máquina Virtual, mas mesmo essa possibilidade vem com muitas complicações.

Docker Container: o que é e como funciona? – Foto: Reprodução/Edureka

Eu posso ter apenas um número limitado de ferramentas de DevOps em execução em uma máquina virtual. Como você pode ver na imagem acima, se eu quiser muitas instâncias do Jenkins e Puppet, precisaria ativar muitas máquinas virtuais, porque cada uma pode ter apenas uma instância dessas ferramentas em execução. A configuração de cada MV traz consigo problemas de infraestrutura. Terei o mesmo problema se decidir configurar várias instâncias do Ansible, Nagios, Selenium e Git. Além disso, também será uma tarefa agitada configurar essas ferramentas em todas as VMs.

É aqui que o Docker vem em socorro. Usando o Docker Container, podemos configurar muitas instâncias do Jenkins, Puppet e muito mais, todas em execução no mesmo contêiner ou em contêineres diferentes que podem interagir entre si, executando apenas alguns comandos. Além disso, também posso escalar facilmente criando várias cópias desses contêineres. Portanto, configurá-los não será um problema.

Docker Container: o que é e como funciona? – Foto: Reprodução/Edureka

Em resumo, não será um exagero dizer que essa é uma opção mais sensata quando comparada às Máquinas Virtuais.

O primeiro foi desenvolvido para beneficiar desenvolvedores e administradores de sistema, fazendo parte de muitas cadeias de ferramentas do DevOps. Os desenvolvedores podem escrever seu código sem se preocupar com os testes ou o ambiente de produção, e os administradores de sistemas não precisam se preocupar com a infraestrutura, pois o Docker pode facilmente aumentar e diminuir o número de sistemas para implantação nos servidores.

O que é o Docker Engine?

Agora vou levá-lo através do Docker Engine, que é o coração do sistema.

O Docker Engine é simplesmente o aplicativo instalado em sua máquina host. Dessa forma, ele funciona como um aplicativo cliente-servidor que usa:

  • Um servidor que é um tipo de programa de longa duração chamado processo daemon;
  • Um cliente da interface da linha de comandos (CLI);
  • A API REST é usada para comunicação entre o cliente CLI e o Docker Daemon.
Docker Container: o que é e como funciona? – Foto: Reprodução/Edureka

Conforme a imagem acima, em um sistema operacional Linux, há um cliente que pode ser acessado a partir do terminal e um host que executa o Daemon. Portanto, construímos nossas imagens e executamos contêineres passando comandos do cliente CLI para o Daemon.

No entanto, no caso do Windows/Mac, há um componente adicional da Caixa de Ferramentas dentro do host do Docker. Dessa forma, esta Docker Toolbox é um instalador para instalar e configurar de forma rápida e facil um ambiente Docker no seu Windows/iOS. Esta caixa de ferramentas instala o Docker Client, Machine, Compose (somente Mac), Kitematic e VirtualBox.

Agora vamos entender três termos importantes, como Imagens do Docker,  Docker Container e Registro do Docker.

O que é a imagem do Docker?

A imagem do Docker pode ser comparada a um modelo usado para criar contêineres do Docker. Dessa forma, eles são os blocos de construção de um Docker Container. Essas imagens do Docker são criadas usando o comando build. Esses modelos somente leitura são usados ??para criar contêineres usando o comando executar.

Docker Container: o que é e como funciona? - Foto: Reprodução/Edureka
Docker Container: o que é e como funciona? – Foto: Reprodução/Edureka

O Docker permite que as pessoas (ou empresas) criem e compartilhem software através de imagens do Docker. Além disso, você não precisa se preocupar se o computador pode executar o software em uma imagem do Docker – um Docker Container sempre pode executá-lo. 

Posso usar uma imagem do docker pronta para uso no docker-hub ou criar uma nova imagem conforme minha necessidade.

O que é o Docker Container?

Contêineres são os aplicativos prontos criados a partir do Docker Images. Ou você pode dizer que eles estão executando instâncias das Imagens e contêm o pacote inteiro necessário para executar o aplicativo. Portanto, isso passa a ser a utilidade final da tecnologia. 

Docker Container: o que é e como funciona? – Foto: Reprodução/Edureka

O que é o Registro do Docker?

Por fim, o Docker Registry é onde as imagens do Docker são armazenadas.  Dessa forma, o Registro pode ser um repositório local de um usuário ou um repositório público como um Docker Hub, permitindo que vários usuários colaborem na criação de um aplicativo. Mesmo com várias equipes da mesma organização, é possível trocar ou compartilhar contêineres enviando-os para o Docker Hub, que é um repositório em nuvem semelhante ao GitHub.

O que é a arquitetura Docker?

A arquitetura do Docker inclui um cliente do Docker – usado para acionar comandos do Docker, um host do Docker – executando o Docker Daemon e um Docker Registry – armazenando imagens do Docker. Dessa forma, o Docker Daemon em execução no Docker Host é responsável pelas imagens e contêineres.

Docker Container: o que é e como funciona? - Foto: Reprodução/Edureka
Docker Container: o que é e como funciona? – Foto: Reprodução/Edureka
  • Para criar uma imagem do Docker, podemos usar a CLI (cliente) para emitir um comando de construção para o Docker Daemon (em execução no Docker_Host). Dessa forma, o Daemon criará uma imagem com base em nossas entradas e a salvará no Registro, que pode ser o hub Docker ou um repositório local;
  • Se não queremos criar uma imagem, podemos apenas puxar uma imagem do hub do Docker, que teria sido criado por um usuário diferente;
  • Por fim, se precisarmos criar uma instância em execução da minha imagem do Docker, podemos emitir um comando de execução na CLI, que criará um Contêiner.

Fonte: Edureka

Gostou? O que achou? Deixe seu comentário. Além disso, não se esqueça de entrar no nosso grupo do Telegram. É só clicar em “Canal do Telegram” que está localizado no canto superior direito da página!