O que são containers e como você pode utilizá-los para otimizar a sua infra
Estava lendo sobre containers e como essa tecnologia pode auxiliar o dia a dia de diversos profissionais, sejam eles desenvolvedores ou profissionais de infraestrutura. Achei o assunto bem interessante, por isso, resolvi compartilhar aqui.
Há um tempo, falava-se muito sobre virtualização (VM’s, máquinas virtuais) que nada mais é do que a possibilidade de utilizar a mesma estrutura física para rodar mais de um sistema operacional, isto é possível graças ao virtualizador.
A vantagem é que você não precisa ter uma infra dedicada para o sistema A ou B e pode chamá-lo a qualquer momento (desde que você tenha todas as licenças de uso, é claro!). Com isso, você pode fazer testes em diferentes sistemas, utilizar máquinas virtuais compartilhadas e por aí vai!
Mas, qual é a diferença entre virtualização e containers?
Uma das grandes mudanças na virtualização durante os anos é a habilidade de usar containers. Para fazer uma virtualização é necessário usar um virtualizador como o Hyper-V, por exemplo, e instalar o novo sistema operacional na sua VM.
Já na tecnologia de containers você pode executar várias aplicações no mesmo kernel do sistema operacional e, se utilizar o Hyper-V Containers poderá executá-las de forma isolada. Assim, podemos subir imagens para apps específicas sem a necessidade de preparar um SO para ela.
Conceitos sobre containers:
Separei alguns termos utilizados para você entender um pouco mais. Um computador físico ou virtual é o host do container, ele pode executar mais de um ao mesmo tempo. Ao iniciar um container, todas as alterações que você fizer ficarão na chamada área restrita.
Os containers funcionam por meio de imagens, a imagem do sistema operacional é a primeira potencialmente de muitas camadas de imagem. Você pode criar imagens conforme faz modificações nas suas aplicações ou sistema de arquivos, assim, quando precisar utilizar uma determinada aplicação ela já está pronta.
As imagens podem ser armazenadas em um registro público ou privado como DockerHub para que elas possam ser usadas em vários hosts de container diferentes, são os chamados repositórios.
Veja na figura abaixo como funciona:
Por que isso é útil?
Depois que o container está em um repositório você pode utilizá-lo para vários cenários, tais como teste, desenvolvimento e produção de forma simples e rápida. É possível usufruir de todos os benefícios de isolamento, reuso e escalabilidade. Além de consumir menos recursos que as máquinas virtuais tradicionais.
Um ponto interessante é que você pode utilizar virtualização e conteinerização em um mesmo projeto, conforme a figura abaixo:
No Windows Server 2016, por exemplo, você pode implantar e gerenciar um container com o Microsoft Visual Studio, o Windows PowerShell ou cliente do Docker.
A diferença entre utilizar o Docker com o Windows Server 2016 e o Hyper-V é que no primeiro, o kernel do SO é compartilhado e no segundo é isolado.
E você, o que você achou sobre o assunto?
Sr. Security Cloud Solution Architect at Microsoft
7 aParabéns Thais! Tecnologia de Containers explicada de maneira bem didática!