Encontré una solución para resolver el problema y puedo usar cap_net_admin
en modo enjambre.
Puede modificar el código fuente de tiempo de ejecución para agregar las capacidades que necesita (será una configuración predeterminada local).
Por ejemplo, agregué el CAP_NET_ADMIN
a mi tiempo de ejecución (usado nvidia-container-runtime
)wanyvic / nvidia-tiempo de ejecución de contenedores.
Después de eso lo reconstruí, inicié un contenedor (uso el modo de enjambre), ingresé: capsh --print
y se puede encontrar CAP_NET_ADMIN:
root@25303a54ebb3:/# capsh --printCurrent:=cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_admin,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap+eipBounding set =cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_admin,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcapSecurebits: 00/0x0/1'b0 secure-noroot: no (unlocked) secure-no-suid-fixup: no (unlocked) secure-keep-caps: no (unlocked)uid=0(root)gid=0(root)groups=
Pero este método no es bueno.
Tampoco puedo establecer cap_add
o cap_drop
en docker-compose.yml
, pero no encuentro la manera de resolverlo.