De forma predeterminada, Docker oculta varios archivos y directorios del /proc del contenedor montando algo sobre él:
$ docker run ubuntu:bionic findmnt -R /proc TARGET SOURCE FSTYPE OPTIONS /proc proc proc rw,nosuid,nodev,noexec,relatime |-/proc/bus proc[/bus] proc ro,relatime |-/proc/fs proc[/fs] proc ro,relatime |-/proc/irq proc[/irq] proc ro,relatime |-/proc/sys proc[/sys] proc ro,relatime |-/proc/sysrq-trigger proc[/sysrq-trigger] | proc ro,relatime |-/proc/asound tmpfs tmpfs ro,relatime |-/proc/acpi tmpfs tmpfs ro,relatime |-/proc/kcore tmpfs[/null] tmpfs rw,nosuid,size=65536k,mode=755 |-/proc/keys tmpfs[/null] tmpfs rw,nosuid,size=65536k,mode=755 |-/proc/timer_list tmpfs[/null] tmpfs rw,nosuid,size=65536k,mode=755 |-/proc/sched_debug tmpfs[/null] tmpfs rw,nosuid,size=65536k,mode=755 `-/proc/scsi tmpfs tmpfs ro,relatime ¿Cómo puedo deshabilitar este comportamiento en Docker (actualmente usando la versión 18.09)? Necesito acceso a una instancia de proceso sin ningún montaje sobre ella, de lo contrario, los contenedores anidados (por ejemplo, con proc ) fallan porque se unshare una protección del kernel. Se puede ver esto con el siguiente comando:
docker run -it --security-opt="seccomp=unconfined" --cap-drop=all ubuntu:bionic unshare --fork --user --pid --mount --mount-proc --setgroups deny --map-root-user --propagation unchanged /bin/bash Esto falla con unshare: mount /proc failed: Permission denied debido a los montajes que están encima de /proc y funcionaría si Docker no creara estos montajes.
Sé que --privileged proporciona acceso completo a /proc :
$ docker run --privileged ubuntu:bionic findmnt -R /proc TARGET SOURCE FSTYPE OPTIONS /proc proc proc rw,nosuid,nodev,noexec,relatime Sin embargo, --privileged otorga al contenedor muchos más permisos (capacidades, acceso a dispositivos, etc.) y no quiero esto. Solo necesito acceso completo a /proc .
También estaría bien para mí tener el sistema de archivos proc montado dos veces en el contenedor, si uno de los montajes no tiene montajes superpuestos. Desafortunadamente, usar --volume /proc:/proc2 monta el /proc del host en el contenedor, y necesito el /proc del contenedor. (Debido a esto, esta pregunta no es un duplicado de Docker - Access host /proc ).
Resumen : ¿Cómo obtener una instancia /proc completamente visible del sistema de archivos proc del contenedor en un contenedor Docker sin usar --privileged ?