2017-03-03 10 views
0

docker container (docker가 해당 프로세스를 cgroup btw에 넣음) 프로세스를 실행하고 있습니다. 프로세스 포크와 을 cgroups에 넣고 싶습니다.cgroup_new_cgroup을 사용하여 cgroup을 생성 할 때 오류 50007

cgroup_init(); 

struct cgroup *my_cgroup = cgroup_new_cgroup(cg_name); 
cgroup_add_controller(my_cgroup, "cpu"); 

int cgroup_cr = cgroup_create_cgroup_from_parent(my_cgroup, 0); 

cgroup_r는 ("cgroup에이 작업이 허용되지 않습니다") 50007입니다 :

나는 내 프로그램에 다음 코드를 추가했다. 나는 그것이 왜 있는지 모른다. 구성이 있습니까 변경해야합니까? 능력이 필요합니까?

답변

0

cgroup 수정 권한으로 프로세스가 도커 컨테이너를 벗어날 수 있으므로 도커는 기본적으로 프로세스를 비활성화 할 수 있습니다. 문제가 당신의 용기를 실행하여 만 기능이있는 경우, 당신은 테스트 할 수 있습니다

것보다는 아마
docker run --cap-add=ALL ... 

더, 당신은 SYS_ADMIN 같은 권한이 필요합니다 및 기능을 줄일 수있을 것입니다 당신의 특정 항목에 추가 .

기능을 추가하는 것은 문제가 해결되지 않으면, 당신은 모든 제한을 제거 할 수 있습니다

+0

:

docker run --privileged ... 

자세한 내용은에서 찾을 수 있습니다 사실, 나는 그 문제가 완전히 다른 것임을 알았지 만 귀하의 대답은 누락 된 링크였습니다 : 프로그램 자체가 능력을 떨어 뜨리기 위해 libcap을 사용했고 (루트로서) 더 이상 cgroup fs에 액세스 할 수 없었습니다. cap-list에 CAP_DAC_OVERRIDE를 추가하면 문제가 해결되었습니다. – Phillipp