De uma maneira geral “containers ” é um nível de virtualização que permite executar várias aplicações isoladamente em um host que suporte a tecnologia de contêineres, como o Windows Server 2016 ou algumas distribuições Linux com Kernel igual ou superior a 3.8.
Um contêiner é um software que é executado em um sistema operacional (Windows ou Linux) que aproveita desse sistema os códigos do SO, ferramentas de sistema, bibliotecas e tudo aquilo que você pode instalar em um servidor.
Ao carregar um contêiner temos uma “imagem” do sistema operacional host, cada contêiner tem seus próprios processos, registro, endereço IP. Vale ressaltar como comentado pelo Vinícius Apolinário (http://admderedes.azurewebsites.net/) que entre os conteiners o isolamento é de User Mode. compartilhando o mesmo Kernel, e como consequência um Container pode afetar o Host. Usando Hyper-V Container o isolamento é no hypervisor (hardware) entre os Containers.
Se eu criar contêiner no Windows só rodo aplicações Windows e assim acontece também com o Linux, afinal o sistema operacional do host compartilha com o contêiner o mesmo kernel.
A diferença entre virtual machines e containers.
Como é possível ver na imagem acima a maior e mais clara diferença entre VMs e containers é a não necessidade de ter um sistema operacional virtualizado para suportar as aplicações.
Nas maquinas virtuais a gente deve instalar o Windows ou o Linux, usamos espaço em disco. Depois criamos as aplicações que irão consumir os recursos da maquina virtual, bibliotecas, recursos de hardware virtualizado, sistema de arquivos e por ai vai.
Enquanto que para os containers já não é necessário virtualizar o sistema operacional, pois ele utiliza os recursos dos binários e bibliotecas em modo compartilhado do próprio host, sendo bem mais leve e rápido que uma maquina virtual.
Porém a flexibilidade das maquinas virtuais no que diz respeito a migração (Mover, Copiar entre ambientes e sistemas) não existe da mesma maneira quando estamos usando containers.
Onde eu posso usar containers?
Você pode usar os recursos de containers tanto na nuvem quanto on-premises.
O Microsoft Azure fornece suporte a criação de uma imagem do Windows Server com a role de containers habilitada assim como você pode ter em seu ambiente local o Windows Server 2016 com a role de containers habilitada.
Conclusão
containers possuem vários cenários onde sua empregabilidade traz rapidez, facilidade, simplificação de administração e muito mais. Nos próximos artigos vou apresentar tutoriais de instalação do recursos de containers tanto no Windows como no Linux além de apresentar no próximo artigo o Docker. Não deixe de comentar, tirar dúvidas e enviar sugestões.
Abraço,
Daniel Donda
Fonte de pesquisa: https://msdn.microsoft.com/virtualization/windowscontainers/containers_welcome e https://www.docker.com/
Cara se entendi bem, então é possível ter uma camada de segurança para fazer testes em softwares e etc usando containers?
Da mesma forma quando temos uma VM só para testes.
Exatamente Icaro. Só que bem mais rápido e fácil. E o foco é usar para aplicações mesmo.
Que maravilha! Que saia logo alguma coisa pra rodar isso em s.o. client
Vc poderá rodar em uma VM no Windows 10. Uma vm com host de conteiners 🙂
Só para comentar que apesar de existir esse isolamento com um Container, é um isolamento de User Mode. Todos eles compartilham o mesmo Kernel, e como consequência um Container pode afetar o Host. Agora, se for um Hyper-V Container, há um isolamento de hypervisor (hardware) entre os Containers, com os mesmos benefícios conforme explicado no artigo… 😉
Vou melhorar o texto para não gerar dúvidas. Obrigado Vinicius.
Muito bom o artigo. Parabéns.