(HINWEIS:In der Frage ist unklar, wie der Fragesteller in den Docker-Container gelangt. Ich gehe annehmen docker exec -it CONTAINER bash
verwendet wurde.)
Ich hatte dieses Problem bei der Verwendung eines Docker-Images basierend auf centos:7
mit Docker-Version 1.9.0
und um dies zu überwinden, habe ich einfach ausgeführt:
docker exec --privileged -it CONTAINER bash
Beachten Sie die Aufnahme von --privileged
.
Mein naives Verständnis für den Grund, warum dies erforderlich ist:Es scheint, dass Docker sich bemüht, den Container "sicherer" zu machen, wie hier dokumentiert.
Hah, die Handlung verdichtet sich. Wenn jemand eine bessere Antwort hat, schreibe sie bitte auf und ich werde sie akzeptieren, wenn sie akzeptabel ist. Aber hier der offensichtliche Grund. Wie fahrlässig von mir, die Protokolldateien auf dem Host zu ignorieren :
Jun 12 01:29:46 hostmachine kernel: [140235.718807] audit_printk_skb: 183 callbacks suppressed
Jun 12 01:29:46 hostmachine kernel: [140235.718810] type=1400 audit(1402536586.521:477): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="trace" denied_mask="trace" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.718860] type=1400 audit(1402536586.521:478): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.718886] type=1400 audit(1402536586.521:479): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.718899] type=1400 audit(1402536586.521:480): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.718921] type=1400 audit(1402536586.521:481): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.718954] type=1400 audit(1402536586.521:482): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.719001] type=1400 audit(1402536586.521:483): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.719043] type=1400 audit(1402536586.521:484): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.719086] type=1400 audit(1402536586.521:485): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.719126] type=1400 audit(1402536586.521:486): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Apparmor scheint also der Schuldige zu sein, obwohl ich herausfinden muss, wie ich es davon überzeugen kann, dies zuzulassen, ohne die Sicherheit von Host/Container zu gefährden, oder um zu sehen, ob es überhaupt möglich ist, ohne die Sicherheit zu gefährden.
Eine andere Möglichkeit, diesmal mit einer feineren Sicherheitseinstellung:Geben Sie dem Docker-Container das SYS_PTRACE-Privileg:
docker run --cap-add=SYS_PTRACE ...