첫째, cgroup은 시스템의 다른 응용 프로그램과 응용 프로그램을 분리하는 데 사용되지 않습니다. 리소스 사용 및 장치 액세스를 관리하는 데 사용됩니다. (제한된) 격리를 제공하는 다양한 네임 스페이스 (PID, UTS, mount, user ...)입니다.
또한 Docker 컨테이너 내에서 시작된 프로세스는 실행중인 AppArmor 프로파일을 관리하지 못할 수 있습니다. 현재 취해진 접근법은 컨테이너를 시작하기 전에 특정 AppArmor 프로파일을 설정하는 것입니다.
Docker의 libcontainer 실행 드라이버가 컨테이너 에 대한 AppArmor 프로파일 설정을 지원하는 것처럼 보이지만 문서에서 예제 나 참조를 찾을 수 없습니다.
분명히 AppArmor는 Ubuntu의 LXC 에서도 지원됩니다 .
애플리케이션 내부에 AppArmor 프로파일을 작성하고 컨테이너 내부에서 프로세스를 시작하기 전에 LXC / libcontainer / Docker / ...가로드하는지 확인해야합니다.
이 방법으로 사용 된 프로파일은 적용되어야하며 테스트하려면 불법 액세스를 시도하여 실패하는지 확인해야합니다.
이 경우 바이너리와 실제로 적용되는 프로파일 사이에는 링크가 없습니다. 컨테이너에이 프로파일을 사용하려면 Docker / LXC에 명시 적으로 지시해야합니다. MySQL 바이너리에 대한 프로파일을 작성하면 컨테이너가 아닌 호스트에서만 프로파일을 시행합니다.