(POZNÁMKA:v otázce není jasné, jak tazatel vstupuje do kontejneru dockeru. Předpokládám docker exec -it CONTAINER bash
byl použit.)
Měl jsem tento problém při použití obrázku dockeru založeného na centos:7
s verzí dockeru 1.9.0
a abych to překonal, běžel jsem:
docker exec --privileged -it CONTAINER bash
Všimněte si zahrnutí --privileged
.
Moje naivní chápání důvodu, proč je to vyžadováno:zdá se, že docker se snaží, aby byl kontejner "bezpečnější", jak je zdokumentováno zde.
Hah, děj houstne. Pokud má někdo lepší odpověď, napište ji a já ji přijmu, pokud to bude přijatelné. Ale tady je zjevný důvod. Je ode mě nedbalé ignorovat soubory protokolu na hostiteli :
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"
Zdá se tedy, že viníkem je apparmor, i když budu muset přijít na to, jak ho přesvědčit, aby to povolil bez ohrožení zabezpečení hostitele/kontejneru, nebo abych zjistil, zda je to vůbec možné bez ohrožení bezpečnosti.
Další možnost, tentokrát s jemnějším nastavením zabezpečení:udělte kontejneru dockeru oprávnění SYS_PTRACE:
docker run --cap-add=SYS_PTRACE ...