Primero, los cgroups no se usan para aislar una aplicación de otras en un sistema. Se utilizan para administrar el uso de recursos y el acceso a dispositivos. Son los diversos espacios de nombres (PID, UTS, montaje, usuario ...) los que proporcionan cierto aislamiento (limitado).
Además, un proceso lanzado dentro de un contenedor Docker probablemente no podrá administrar el perfil de AppArmor con el que se está ejecutando. El enfoque actualmente adoptado es configurar un perfil específico de AppArmor antes de iniciar el contenedor.
Parece que el controlador de ejecución libcontainer en Docker admite la configuración de perfiles de AppArmor para contenedores , pero no puedo encontrar ningún ejemplo o referencia en el documento.
Aparentemente, AppArmor también es compatible con LXC en Ubuntu .
Debe escribir un perfil de AppArmor para su aplicación y asegurarse de que LXC / libcontainer / Docker / ... lo cargue antes de iniciar los procesos dentro del contenedor.
Los perfiles utilizados de esta manera deben aplicarse, y para probarlo debe probar un acceso ilegal y asegurarse de que falla.
No hay ningún vínculo entre el binario y el perfil realmente aplicado en este caso. Debe decirle explícitamente a Docker / LXC que use este perfil para su contenedor. Escribir un perfil para el binario MySQL solo lo impondrá en el host, no en el contenedor.