Container
Em sua essência, um Container é um ambiente que contém todos os recursos necessários para executar uma aplicação de forma isolada do sistema operacional hospedeiro.
Uma característica importante dos Containers é sua leveza e portabilidade. Enquanto as máquinas virtuais podem ocupar gigabytes de espaço, os Containers geralmente têm apenas alguns megabytes. Isso os torna ideais para implantação e distribuição de aplicações, proporcionando maior agilidade no ciclo de entrega.
Comparado às máquinas virtuais, os Containers oferecem um nível de isolamento mais leve, compartilhando o mesmo Kernel do sistema operação do host de controle. Isso significa que, se um Container apresentar problemas, isso não afetará todo o ambiente de execução.
Cada container corresponde a 1 processo rodando na máquina, proporcionando um isolamento com o sistema e os outros containers. Entretanto, é possível interligar os containers entre si.
A portabilidade das imagens de Containers permite que as aplicações sejam executadas consistentemente em diferentes ambientes, desde o desenvolvimento até a produção. Essa consistência simplifica o ciclo de entrega e garante que o que funciona localmente também funcione em ambientes de produção.
Os contêineres são criados a partir de imagens, que são arquivos que contêm todas as configurações e dependências necessárias para rodar uma aplicação. Cada contêiner é uma instância única da imagem, com seu próprio espaço de armazenamento e recursos do sistema.
Em resumo, o uso de Containers, como facilitado pelo Docker e LXC, oferece uma abordagem eficiente e escalável para o desenvolvimento, implantação e execução de aplicações, promovendo maior agilidade, consistência e portabilidade em todo o processo de desenvolvimento de software.