我对runc容器有一个特殊的问题。我有一个执行以下命令的 bash 脚本(以 root 身份运行):
$ setcap cap_net_bind_service=+ep ${PACKAGE_DIR}/bin/my-binary
$ chpst -u vcap:vcap "${PACKAGE_DIR}/bin/my-binary" --config "${JOB_DIR}/config/config.json"
每次,当它在容器启动时运行时,它都会失败并显示以下输出:
5116 Segmentation fault chpst -u vcap:vcap "${PACKAGE_DIR}/bin/my-binary" --config "${JOB_DIR}/config/config.json"
然而:
- 当我 ssh 或 shell 进入容器并手动运行命令时,它将起作用。
- 如果我删除
chpst -u vcap:vcap
(以root身份运行)它也可以工作。 - 如果我删除
setcap cap_net_bind_servic...
声明,它也会起作用。 - 当我将 chown 更改
my-binary
为 时vcap:vcap
,它会起作用。
但这些都不是真正实施的有效选择。我什至将二进制文件的源代码编辑为简单地休眠 2 小时 - 这没有任何效果,所以我不认为二进制文件的实际源代码是原因。有什么我想念的吗?
我的 runc 版本是:
runc version 1.0.0-rc5+dev
commit: 69663f0bd4b60df09991c08812a60108003fa340
spec: 1.0.0