如何为Swarm容器启用SYS_PTRACE

10

我有一个在Linux上运行的Docker Swarm应用程序。我需要附加调试器(gdb),但是我遇到了错误:

ptrace: Operation not permitted.

研究让我使用“cap_add”,但这在Swarm应用中不允许。

https://docs.docker.com/compose/compose-file/#cap_add-cap_drop

cap_add, cap_drop

Add or drop container capabilities. See man 7 capabilities for a full list.

cap_add: - ALL

cap_drop: - NET_ADMIN - SYS_ADMIN

Note: These options are ignored when deploying a stack in swarm mode with a (version 3) Compose file.
我了解到我可以使用cap_add手动启动容器并进行调试,但我更希望在不停止应用程序的情况下进行调试。
是否有一种方法将能力(特别是SYS_PTRACE)添加到Swarm部署的应用程序中,以便调试器正常工作?
1个回答

2

支持这一功能是在20.10.0版本(2020年12月8日)中添加的,所以您只需将“cap_add”部分添加到堆栈文件中即可。

cap_add:
  - SYS_PTRACE

此功能目前仅在发布说明和问题跟踪器中提到。

将能力支持添加到堆栈/服务命令docker/cli#2687 docker/cli#2709 moby/moby#39173 moby/moby#41249

撰写本文时,最新的Compose文件文档版本为19.03,仍然指出cap_add/cap_drop不支持Swarm。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接