Software · Infraestrutura & Sistemas
Containers no Windows e Além: Job Objects, Server Silos, Jails e Zones
Como o isolamento em nível de sistema operacional evoluiu além do Linux: Job Objects no Windows, FreeBSD Jails, Solaris Zones e a arquitetura dos Windows Server Containers.
Neste artigo
A narrativa popular de que containers nasceram no Linux com o Docker omite décadas de evolução em sistemas operacionais corporativos. O conceito de isolar processos compartilhando o mesmo kernel data de 1979 com o chroot no Unix V7, consolidou-se nos anos 2000 com o FreeBSD e Solaris, e ganhou vida própria no ecossistema Windows NT.
flowchart TD
subgraph Evolucao["Linhagem Histórica de Isolamento"]
Chroot["1979: Unix chroot<br/>(Mudança de diretório raiz)"]
Jails["2000: FreeBSD Jails<br/>(IPs dedicados, filesystem e processos)"]
Zones["2004: Solaris Zones<br/>(BrandZ, quotas de CPU e rede virtual)"]
LXC["2008: Linux Namespaces & cgroups<br/>(Base do Docker em 2013)"]
WinSilos["2016: Windows Server Silos<br/>(Containers nativos Windows)"]
end
Chroot --> Jails --> Zones --> LXC --> WinSilos
A Fundação do Windows: Job Objects
No Windows NT, muito antes de existirem ferramentas de containers, o kernel fornecia os Job Objects. Um Job Object agrupa múltiplos processos sob uma mesma fronteira de controle de recursos:
- Limites máximos de memória física ou virtual.
- Limite de taxa de ocupação de tempo de CPU (processor affinity e limites percentuais).
- Prioridade compartilhada de escalonamento.
- Encerramento atômico de toda a árvore de processos descendentes.
Embora úteis para contenção, Job Objects originais não ofereciam isolamento de namespace: os processos enxergavam os mesmos arquivos, chaves de registro do Windows e portas de rede dos demais processos do sistema.
FreeBSD Jails e Solaris Zones
No ano 2000, o FreeBSD introduziu os Jails, expandindo o chroot para isolar a tabela de processos, o subsistema de rede (atribuindo endereços IP dedicados a cada jail) e as permissões de superusuário (o root dentro do jail não conseguia alterar configurações do kernel hospedeiro).
Em 2004, a Sun Microsystems levou a tecnologia ao estado da arte corporativo com os Solaris Zones. As zonas permitiam particionar servidores SPARC maciços em ambientes totalmente independentes, com quotas garantidas por ZFS, interfaces virtuais e até kernels de compatibilidade para executar binários Linux diretamente sobre o Solaris (BrandZ).
A Arquitetura dos Containers Windows
Para suportar o Docker nativamente no Windows Server 2016, a Microsoft desenvolveu os Server Silos no subsistema executivo do NT:
graph TD
subgraph ProcessIsolation["Modo Process Isolation (Kernel Compartilhado)"]
K1["Kernel Windows NT"]
Silo1["Server Silo A<br/>Registro Virtualizado<br/>Host Compute Service (HCS)"]
Silo2["Server Silo B<br/>Registro Virtualizado<br/>Host Compute Service (HCS)"]
K1 --> Silo1
K1 --> Silo2
end
subgraph HyperVIsolation["Modo Hyper-V Isolation (Micro-VM Dedicada)"]
Hypervisor["Hyper-V Hypervisor"]
VM1["Micro-VM com Kernel NT dedicado<br/>Container A"]
VM2["Micro-VM com Kernel NT dedicado<br/>Container B"]
Hypervisor --> VM1
Hypervisor --> VM2
end
| Característica | Modo Process Isolation | Modo Hyper-V Isolation |
|---|---|---|
| Kernel | Compartilhado diretamente com o host NT | Instância dedicada de micro-kernel em hardware virtual |
| Compatibilidade de Build | Versão do container deve bater com a versão exata do SO hospedeiro | Pode executar versões de build distintas ou até Linux via WSL2 |
| Isolamento de Segurança | Fronteira baseada em software (Silos + Object Manager) | Fronteira blindada por hardware e hipervisor |
| Consumo de Memória | Leve (poucas centenas de megabytes) | Maior pegada inicial devido à inicialização da VM |
Compreender essa evolução permite que engenheiros avaliem com clareza as garantias de segurança de cada runtime, identificando quando o isolamento baseado em software é suficiente ou quando exigências regulatórias demandam barreiras físicas por hipervisor.