Skip to contentO que são contêineres LinuX
- LXC ( LinuX Containers ) é um sistema de virtualização leve
- É baseado em linux (kernal) e permite a criação e gerenciamento de muitos ambientes linux virtualizados em um único host pai
- Esses ambientes virtualizados (contêineres de chamadas) são invisíveis uns para os outros
- Ao contrário de algumas outras soluções de virtualização, nenhuma emulação de hardware é usada e o contêiner compartilha o kernel com o host,
- Isso torna o LXC leve e fácil de usar
- O conceito por trás do LXC são os contêineres
Mais sobre contêineres
- Simplesmente contêineres fornecem mecanismo de virtualização de nível de sistema operacional
- Os contêineres são grupos de processos na caixa do Linux
- Dentro da caixa, parece uma VM (mas não uma VM)
- Fora da caixa, parece um grupo de processos
- A figura a seguir descreve a aparência de vários contêineres em um único host
VMs vs Containers
- VMs consiste em hipervisor que fornece hardware emulado para imagens de máquina virtual
- Assim, as VMs permitem criar muitos sistemas independentes por meio de hipervisor
- Como mencionei, os contêineres não são VMs
- Os contêineres são mais leves do que as VMs, pois compartilham o kernal com o host sem emulação de hardware (hipervisor)
- Os contêineres usam recursos kernal, como namespaces do kernel e grupos de controle (cgroups)
- Os namespaces do kernel fornecem isolamento básico e uso de CGroups para alocação de recursos
- Basicamente, os contêineres fornecem a mesma funcionalidade fornecida pelas VMs, sem qualquer sobrecarga do hipervisor
Namespaces
- Os namespaces do kernel fornecem isolamento básico
- Garante que cada contêiner não pode ver ou afetar outros contêineres
- Por exemplo, com namespaces, você pode ter vários processos com o mesmo PID em diferentes ambientes (contêineres)
- Existem seis tipos de namespaces disponíveis
- pid (processos)
- net (interfaces de rede, roteamento …)
- ipc (System V IPC)
- mnt (pontos de montagem, sistemas de arquivos)
- uts (nome do host)
- usuário (UIDs)
CGroups
- CGroups (grupos de controle) alocam recursos (memória, CPU, disco I / O) entre contêineres
- Ele garante que cada contêiner receba seu quinhão de memória, CPU, disco I / O (recursos),
- Também garante que o único contêiner não consuma os recursos
Docker e LXC
- Docker fornece API de alto nível que é capaz de criar e manter ambientes de virtualização leves (isolamento de processos)
- É realmente uma extensão das capacidades do LXC
- Docker usou o LXC como ambiente de execução padrão
- Na verdade, o docker contém wrapper em torno do LXC para tornar sua funcionalidade
- Mas recentemente (após docker versão 0.9) eles substituíram o LXC com seu próprio ambiente de execução chamado libcontainers
Referência