Bem, os sinos e assobios extras são chamados de isolamento do processo, um contêiner obtém seu próprio espaço de nome no kernel do host, o que significa que o programa no contêiner não pode tentar ler a memória do kernel ou consumir mais RAM do que o permitido.
Ele também isola pilhas de rede, para que dois processos possam escutar na porta 8080, por exemplo, você terá que lidar com o roteamento no nível do host, não há mágica aqui, mas isso permite manipular o roteamento em um único local e evitar modificar a configuração do processo para ouça uma porta gratuita.
Em segundo lugar, um chroot ainda é de leitura / gravação, qualquer alteração é permanente, um contêiner de docker usando aufs
será iniciado a partir de um sistema de arquivos limpo toda vez que você iniciar o contêiner (as alterações serão mantidas se você parar / iniciar o IIRC).
Portanto, embora um contêiner possa ser considerado como process namespace
+ chroot
, a realidade é um pouco mais complexa.