Primeiro, os cgroups não são usados para isolar um aplicativo de outros em um sistema. Eles são usados para gerenciar o uso de recursos e o acesso ao dispositivo. São os vários namespaces (PID, UTS, mount, user ...) que fornecem algum isolamento (limitado).
Além disso, um processo iniciado em um contêiner do Docker provavelmente não conseguirá gerenciar o perfil do AppArmor no qual está sendo executado. A abordagem atualmente adotada é configurar um perfil específico do AppArmor antes de iniciar o contêiner.
Parece que o driver de execução libcontainer no Docker suporta configuração dos perfis do AppArmor para contêineres , mas não consigo encontrar nenhum exemplo ou referência no documento.
Aparentemente, o AppArmor também é compatível com o LXC no Ubuntu .
Você deve escrever um perfil do AppArmor para o seu aplicativo e verificar se o LXC / libcontainer / Docker / ... o carrega antes de iniciar os processos dentro do contêiner.
Os perfis usados dessa maneira devem ser aplicados e, para testá-lo, você deve tentar um acesso ilegal e verificar se ele falha.
Não há link entre o binário e o perfil realmente imposto neste caso. Você precisa informar explicitamente ao Docker / LXC para usar esse perfil para seu contêiner. Escrever um perfil para o binário do MySQL irá forçá-lo apenas no host, não no contêiner.