2017-03-03 4 views
0

私はdocker containerでプロセスを実行しています(ドッカーがそのプロセスを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が50007である( "CGROUP、操作は許されません")。なぜそれが分からないのですか?いくつかありますか設定私は変更する必要がありますか? 能力は必要ですか?

答えて

0

私はcgroupを変更するアクセスがプロセスがドッカーコンテナをエスケープできると思うので、ドッカーはデフォルトでそれを無効にします。問題はであなたのコンテナを実行することによってのみ機能している場合は、テストすることができます可能性が高い

docker run --cap-add=ALL ... 

もっと、あなたはSYS_ADMINのような特権が必要になりますし、能力を削減することができますちょうどあなたの特定のアイテムに追加。

機能を追加すると、あなたの問題が解決しない場合は、あなたが持つすべての制限を削除することができます。

+0

docker run --privileged ... 

詳細はで見つけることができます実際に、私は問題が完全に他の何かであることを発見しましたがあなたの答えは欠けていたリンクでした:プログラム自体は能力を落とすためにlibcapを(rootとして)使用し、cgroup fsにもうアクセスできませんでした。 cap-listにCAP_DAC_OVERRIDEを追加すると問題が解決しました。 – Phillipp

関連する問題