Questa particolare impostazione è influenzata dallo spazio dei nomi di rete in cui viene eseguita la finestra mobile.
Come regola generale /proc
altera le impostazioni rilevanti a livello di sistema, tecnicamente parlando, tuttavia stai modificando le impostazioni in /proc/net
che restituisce i risultati in base allo spazio dei nomi di rete.
Nota che /proc/net
è in realtà un collegamento simbolico a /proc/self/net
poiché riflette davvero le impostazioni dello spazio dei nomi in cui stai lavorando.
Docker 1.12+ ha il supporto nativo per modificare i valori sysctl all'interno dei contenitori. Ecco un estratto dalla documentazione:
Configura i parametri del kernel con spazio dei nomi (sysctls) in fase di esecuzione
--sysctl imposta i parametri del kernel con spazio dei nomi (sysctls) nel contenitore. Ad esempio, per attivare l'inoltro IP nello spazio dei nomi di rete dei contenitori, eseguire questo comando:
docker run --sysctl net.ipv4.ip_forward=1 someimage
Usando il tuo esempio, il modo corretto per alzare net.core.somaxconn
sarebbe:
docker run ... --sysctl net.core.somaxconn=65535 ...
Il contenitore privilegiato utilizza ancora il proprio spazio dei nomi di processo per /proc
. Quello che puoi fare è montare il vero /proc
all'interno del contenitore:
docker run --rm --privileged -v /proc:/host-proc ubuntu:latest \
'echo 65535 > /host-proc/sys/net/core/somaxconn'