gdb를 사용하여 프로세스에 연결할 때. 보여주다
프로세스에 연결할 수 없습니다. 사용자의 uid가 대상 프로세스의 uid와 일치하는 경우 /proc/sys/kernel/yama/ptrace_scope 설정을 확인하거나 루트로 다시 시도하십시오. 자세한 내용은 /etc/sysctl.d/10-ptrace.conf를 참조하세요.
ptrace: 작업이 허용되지 않습니다.
루트로서 echo 0 >/proc/sys/kernel/yama/ptrace_scope
;를 사용하면 다음과 같이 표시됩니다.
bash: /proc/sys/kernel/yama/ptrace_scope: 읽기 전용 파일 시스템
이 문제를 어떻게 해결할 수 있나요? 내용 /etc/sysctl.d/10-ptrace.conf
은kernel.yama.ptrace_scope = 0
답변1
이제 docker에서 이 옵션을 사용할 수 있습니다 --privileged
.https://docs.docker.com/engine/reference/commandline/exec/
docker exec --privileged -ti <container> bash
특권 모드에서는 ptrace_scope를 수정하지 않고도 gdb를 실행할 수 있습니다.
답변2
보다 세분화된 접근 방식을 사용하려면 cap_add
. 나에게 도움이 된 플래그는 입니다 SYS_PTRACE
. 이는 CLI와 docker-compose 파일 모두에서 작동합니다. 스웜의 경우 Docker 20.10.0 이상이 필요합니다.