Po pierwsze, grupy cg nie są używane do izolowania aplikacji od innych w systemie. Służą do zarządzania wykorzystaniem zasobów i dostępem do urządzeń. Różne przestrzenie nazw (PID, UTS, mount, user ...) zapewniają pewną (ograniczoną) izolację.
Ponadto proces uruchomiony w kontenerze Docker prawdopodobnie nie będzie w stanie zarządzać profilem AppArmor, pod którym działa. Obecnie stosowane podejście polega na skonfigurowaniu określonego profilu AppArmor przed uruchomieniem kontenera.
Wygląda na to, że sterownik wykonywania libcontainer w Docker obsługuje ustawianie profili AppArmor dla kontenerów , ale nie mogę znaleźć żadnego dokumentu ani odniesienia w tym dokumencie.
Najwyraźniej AppArmor jest także obsługiwany przez LXC w Ubuntu .
Powinieneś napisać profil AppArmor dla swojej aplikacji i upewnić się, że LXC / libcontainer / Docker / ... załaduje go przed uruchomieniem procesów w kontenerze.
Profile używane w ten sposób powinny być egzekwowane, a aby je przetestować, powinieneś spróbować nielegalnego dostępu i upewnić się, że się nie powiedzie.
W tym przypadku nie ma powiązania między profilem binarnym a faktycznie wymuszonym. Musisz wyraźnie powiedzieć Docker / LXC, aby używał tego profilu dla twojego kontenera. Napisanie profilu dla pliku binarnego MySQL wymusi go tylko na hoście, a nie w kontenerze.