docker 容器 returns "ptrace: Operation not permitted." 中的 gdb

gdb in docker container returns "ptrace: Operation not permitted."

我已经在容器和主机上检查了 /proc/sys/kernel/yama/ptrace_scope - 两者都将值报告为零,但是当附加到 pid 时,gdb 报告

Reading symbols from /opt/my-web-proxy/bin/my-web-proxy...done.
Attaching to program: /opt/my-web-proxy/bin/my-web-proxy, process 1
ptrace: Operation not permitted.

我也试过使用特权标志附加到容器

docker exec --privileged -it mywebproxy_my-proxy_1 /bin/bash

主机 OS 是 Fedora 25,docker 来自他们的仓库,容器是官方的 centos6.8

我找到了答案——容器需要以 strace 功能启动

将此添加到我的 docker-compose.yml 文件中允许 GDB 工作

cap_add:
    - SYS_PTRACE

或者也可以在docker命令行中用--cap-add=SYS_PTRACE

传递