Contêineres Linux #lxc

O 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

Cenário

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

Cenário

  • 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

Cenário

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
  1. pid (processos)
  2. net (interfaces de rede, roteamento …)
  3. ipc (System V IPC)
  4. mnt (pontos de montagem, sistemas de arquivos)
  5. uts (nome do host)
  6. 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