Eu encontrei uma solução para resolver o problema e posso usar cap_net_admin
no modo swarm.
Você pode modificar o código-fonte do tempo de execução para adicionar os recursos necessários (será uma configuração padrão local).
Por exemplo, adicionei o CAP_NET_ADMIN
ao meu tempo de execução (use nvidia-container-runtime
)
wanyvic / nvidia-container-runtime .
Depois que eu reconstruí-lo, iniciei um container (use o modo swarm), input: capsh --print
e CAP_NET_ADMIN podem ser encontrados:
root@25303a54ebb3:/# capsh --print
Current:=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+eip
Bounding 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_setfcap
Securebits: 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=
Mas esse método não é bom.
Eu também não consigo definir cap_add
ou cap_drop
em docker-compose.yml
, mas não consigo encontrar uma maneira de resolvê-lo.