Sobes.tech
Junior

O que é utilizado dentro de um contêiner Docker?

sobes.tech IA

Resposta da IA

O contêiner Docker utiliza uma série de tecnologias para o isolamento de processos e recursos:

  • Namespaces do núcleo Linux: Fornecem isolamento para vários recursos do sistema, tais como:

    • PID (ID de Processo): Isolam processos.
    • Net (Rede): Isolam a pilha de rede.
    • Mount (mnt): Isolam os pontos de montagem do sistema de ficheiros.
    • UTS (Unix Timesharing System): Isolam o nome do host e o nome de domínio.
    • IPC (Comunicação entre processos): Isolam os mecanismos de interação entre processos.
    • User (ID de utilizador e grupo): Isolam os identificadores de utilizador e grupos.
  • Grupos de controlo (cgroups): Gerem e limitam o uso de recursos de hardware para processos dentro do contêiner, incluindo:

    • CPU: Limitação do uso do tempo de processador.
    • Memory: Limitação do uso de memória RAM.
    • Block I/O: Limitação da largura de banda de entrada/saída do disco.
    • Net I/O: Limitação da largura de banda de entrada/saída de rede.
  • Sistemas de ficheiros union: Fornecem um sistema de ficheiros combinado composto por várias camadas. O Docker utiliza sistemas de ficheiros como OverlayFS, AUFS, Btrfs, ZFS. Isto permite gerir eficientemente o armazenamento de imagens e criar camadas apenas para alterações.

  • Processo Docker Daemon: Gere o ciclo de vida dos contêineres (criação, arranque, paragem, eliminação).

  • Runtime do contêiner: Execução de baixo nível do contêiner. O Docker utilizou e suporta diferentes runtimes, tais como runc (especificação OCI), containerd.

  • Imagem do contêiner: Conjunto de camadas do sistema de ficheiros e metadados necessários para executar a aplicação.

  • Aplicação: Código executável, bibliotecas, dependências e ficheiros de configuração que constituem o próprio programa, que funciona dentro do contêiner.

Em essência, um contêiner é um processo isolado (ou conjunto de processos) que funciona num ambiente restrito, fornecido pelo núcleo Linux e gerido pelo Docker.