1

以下のように私のアプリを実行します:

sudo rkt run --insecure-options=image --interactive --net=host ./myapp.aci

メッセージが表示されます:

メモリのロックに失敗しました: メモリを割り当てることができません

CAP_IPC_LOCK掘り下げた後、コンテナに機能が渡されていないことが示されているように見えます。いくつかのドキュメントを掘り下げましたが、構成を追加する必要がある場所や、これを有効にするオプションが見つかりません。どうすればいいですか?

4

2 に答える 2

3

acbuild を使用して、コンテナーに適切な機能を与えることができます。

すでに acbuild を使用して ACI を作成している場合は、次の行をビルド スクリプトに追加するだけです。

echo '{ "set": ["CAP_IPC_LOCK"] }' | acbuild isolator add "os/linux/capabilities-retain-set" -

または、acbuild を使用して ACI を作成していない場合は、--modifyフラグを使用して既存の ACI を変更できます。したがって、コマンドは次のようになります。

echo '{ "set": ["CAP_IPC_LOCK"] }' | acbuild --modify path/to/your/app.aci isolator add "os/linux/capabilities-retain-set" -

于 2016-04-04T16:12:42.190 に答える
3

ACI は、タイプ os/linux/capabilities-retain-set のアイソレーターを使用して、マニフェストで必要なキャップを指定できます。

マニフェストにそのようなアイソレーターが含まれているかどうかを確認するには、actool を使用できます。

$ actool cat-manifest --pretty-print ./myapp.aci

次のように表示される場合があります。

    "isolators": [
        {
            "name": "os/linux/capabilities-retain-set",
            "value": {
                "set": [
                    "CAP_IPC_LOCK"
                ]
            }
        }
    ]

を追加するにCAP_IPC_LOCKは、次を使用できます。

$ actool patch-manifest --capability=CAP_IPC_LOCK --replace ./myapp.aci

現在、rkt runコマンド ラインで機能を直接追加することはできません。この機能リクエストについて、GitHub に問題を提出しました: coreos/rkt#2371

于 2016-04-04T09:29:41.103 に答える