Em que se base o isolamento de contêineres no Docker?
sobes.tech IA
Resposta da IA
O isolamento de contêineres no Docker baseia-se nas seguintes tecnologias e mecanismos principais do núcleo Linux:
-
Namespaces (Espaços de nomes): Permitem isolar a visibilidade e o acesso aos recursos do sistema. O Docker usa vários tipos de Namespaces:
PID namespace: Isola os processos, cada contêiner vê apenas seus próprios processos (PID 1 dentro do contêiner).Net namespace: Isola a pilha de rede (interfaces de rede, endereços IP, portas, regras de roteamento).Mnt namespace: Isola os pontos de montagem do sistema de arquivos.UTS namespace: Isola o hostname e o nome de domínio.IPC namespace: Isola os recursos de comunicação entre processos (semaforos, memória compartilhada).User namespace: Isola os IDs de usuário e grupo.
-
Control Groups (cgroups): Permitem limitar e controlar o consumo de recursos do sistema (CPU, memória, I/O, tráfego de rede) para grupos de processos. O Docker usa cgroups para:
- Limitar a quantidade de CPU ou a fração de tempo de processador.
- Limitar a memória disponível.
- Priorização ou limitação de entrada/saída de disco.
- Limitar o tráfego de rede.
-
Union File Systems (UnionFS): Criam camadas do sistema de arquivos. O Docker usa UnionFS como OverlayFS, AUFS (mais antigo), Btrfs. Permitem:
- Criar camadas leves para as imagens do Docker.
- Utilizar eficientemente o espaço em disco por meio do uso compartilhado de camadas base.
- Ao registrar alterações no contêiner, criar camadas COW (Copy-on-Write), sem modificar a imagem base.
-
Seccomp (Modo de computação segura): Limita as chamadas ao sistema (syscalls) que um processo pode realizar dentro do contêiner, reduzindo assim a superfície de ataque. O Docker usa perfis seccomp por padrão para a maioria dos contêineres.
-
AppArmor / SELinux: Para maior segurança e isolamento, podem ser usados módulos de controle de acesso obrigatório (MAC), como AppArmor ou SELinux. Eles fornecem um controle mais granular sobre o que os processos podem fazer (por exemplo, acesso a arquivos, recursos de rede). O Docker pode usar perfis do AppArmor ou SELinux se estiverem configurados no sistema host.