Erstens werden cgroups nicht verwendet, um eine Anwendung von anderen auf einem System zu isolieren. Sie werden zum Verwalten der Ressourcennutzung und des Gerätezugriffs verwendet. Es sind die verschiedenen Namespaces (PID, UTS, Mount, User ...), die eine gewisse (begrenzte) Isolation bieten.
Darüber hinaus kann ein Prozess, der in einem Docker-Container gestartet wird, das AppArmor-Profil, unter dem er ausgeführt wird, wahrscheinlich nicht verwalten. Derzeit wird ein bestimmtes AppArmor-Profil eingerichtet, bevor der Container gestartet wird.
Es sieht so aus, als ob der libcontainer-Ausführungstreiber in Docker das Festlegen von AppArmor-Profilen für Container unterstützt , aber ich kann kein Beispiel oder keine Referenz im Dokument finden.
Anscheinend wird AppArmor auch mit LXC in Ubuntu unterstützt .
Sie sollten ein AppArmor-Profil für Ihre Anwendung schreiben und sicherstellen, dass LXC / libcontainer / Docker / ... es lädt, bevor Sie die Prozesse im Container starten.
Auf diese Weise verwendete Profile sollten erzwungen werden. Um sie zu testen, sollten Sie einen illegalen Zugriff versuchen und sicherstellen, dass er fehlschlägt.
In diesem Fall besteht keine Verbindung zwischen dem binären und dem tatsächlich erzwungenen Profil. Sie müssen Docker / LXC ausdrücklich anweisen, dieses Profil für Ihren Container zu verwenden. Wenn Sie ein Profil für die MySQL-Binärdatei schreiben, wird es nur auf dem Host und nicht im Container erzwungen.