2016-08-17 7 views
0

私はシステムプログラミングのバックグラウンドを持つ初心者のプログラマーで、libcontainerを解体しようとしています。私は名前空間とコントロールグループにはかなり精通しています。私は、libcontainerがどのようにこれらの機能を利用してコンテナを作成するのかを知ることに興味があります。libcontainer - システムプログラマーの視点

論理的に言えば、クローンシステムコールとNEW_NS_FLAGSを呼び出す必要があります。しかし、私はこのクローンシステムコールが呼び出される場所を見つけることができません!!

文書化では、ファクトリインターフェイスを使用してコンテナを作成する必要があります。 idとconfigの検証ジョブを実行し、700のパーミッションを持つディレクトリを作成するだけです。

container.startは、新しい名前空間を作成する予定であり、クローンシステムコールも呼び出さない。

システムコールのコンテナ作成の仕組みを教えてくれる人がいれば、非常に役に立ちます。

答えて

0

私もこれに興味があり、コードを深く見て始めました。

あなたが探しているものは、ネームスペースの設定のための設定を読み込む(またはむしろunixソケット経由でnetlinkメッセージを使って渡される)nsexec.cで行われると信じています。

子プロセスでは、setns()を呼び出して名前空間を作成したり、新しい値に設定したりすると思います。

すべてが私には分かりませんが、これまでに理解していたことから、libcontainerを使ったプロセスでは、新しいコンテナにPID 1になる "init"という引数があります。この新しいプロセスでは、Cでいくつかのことを行い、コンテナを設定します。

関連する問題