如何将 mlock 系统调用授予通过 "sudo rkt run" 在 CoreOs 上调用的容器
How do I grant the mlock syscall to a container invoked via "sudo rkt run" on CoreOs
运行 我的应用程序如下:
sudo rkt run --insecure-options=image --interactive --net=host ./myapp.aci
我收到消息:
Failed to lock memory: cannot allocate memory
经过一些挖掘似乎表明容器没有传递给它的 CAP_IPC_LOCK
能力。我已经深入研究了一些文档,但找不到我需要在哪里添加配置或任何选项来启用它。我该怎么做?
ACI 可以使用 isolator of type 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
您可以使用 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" -
运行 我的应用程序如下:
sudo rkt run --insecure-options=image --interactive --net=host ./myapp.aci
我收到消息:
Failed to lock memory: cannot allocate memory
经过一些挖掘似乎表明容器没有传递给它的 CAP_IPC_LOCK
能力。我已经深入研究了一些文档,但找不到我需要在哪里添加配置或任何选项来启用它。我该怎么做?
ACI 可以使用 isolator of type 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
您可以使用 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" -