web-dev-qa-db-fra.com

gdb dans le conteneur docker renvoie "ptrace: opération non autorisée."

J'ai vérifié /proc/sys/kernel/yama/ptrace_scope dans le conteneur et sur l'hôte - les deux rapportent la valeur à zéro, mais lorsqu'ils sont attachés aux rapports pid one 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.

J'ai également essayé d'attacher au conteneur avec le drapeau privilégié

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

Le système d'exploitation hôte est Fedora 25 avec docker à partir de leurs dépôts et le conteneur est un centos6.8 officiel

26
Adrian

J'ai découvert la réponse - le conteneur doit être démarré avec des capacités strace

L'ajout de cela à mon fichier docker-compose.yml permet à GDB de fonctionner

cap_add:
    - SYS_PTRACE

Ou il peut également être passé sur la ligne de commande du docker avec --cap-add=SYS_PTRACE

44
Adrian