GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo sustituir lsof dentro de un Docker (nativo, no basado en LXC)?

(NOTA:no está claro en la pregunta cómo ingresa el autor de la pregunta al contenedor acoplable. Estoy suponiendo docker exec -it CONTAINER bash fue usado.)

Tuve este problema al usar una imagen acoplable basada en centos:7 con la versión acoplable 1.9.0 y para superar esto, simplemente ejecuté:

docker exec --privileged -it CONTAINER bash

Tenga en cuenta la inclusión de --privileged .

Mi comprensión ingenua de la razón por la que esto es necesario:parece que Docker hace un esfuerzo para que el contenedor sea más "seguro", como se documenta aquí.


Hah, la trama se complica. Si alguien tiene una respuesta mejor, escríbala y la aceptaré, si es aceptable. Pero aquí la razón aparente. Qué negligente de mi parte ignorar los archivos de registro en el host :

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 parece ser el culpable, aunque tendré que averiguar cómo convencerlo para que permita esto sin comprometer la seguridad del host/contenedor o para ver si es posible sin comprometer la seguridad.


Otra posibilidad, esta vez con una configuración de seguridad más detallada:otorgue el privilegio SYS_PTRACE al contenedor docker:

docker run --cap-add=SYS_PTRACE ...

Linux
  1. ¿Cómo puedo comprobar que existe un archivo y ejecutar un comando si no es así?

  2. ¿Cómo puedo leer la documentación sobre los comandos zsh integrados?

  3. ¿Se puede ejecutar docker dentro de un contenedor de Linux?

  4. ¿Cómo puedo hacer ping a otros contenedores en una red docker a través de su nombre de host?

  5. ¿Cómo puedo saber si la opción set -e está habilitada o no?

Cómo ejecutar un trabajo cron dentro de un contenedor docker

¿Cómo puedo determinar qué proceso tiene un archivo abierto en Linux?

¿Cómo arreglar la actualización:no se puede encontrar el grupo `mlocate' en entware?

Android - ¿Cómo puedo compilar aplicaciones nativas en mi teléfono rooteado?

¿Cómo puedo saber qué archivos tiene abiertos un proceso?

¿Por qué mi crontab no funciona y cómo puedo solucionarlo?