Toto konkrétní nastavení spadá pod vliv síťového jmenného prostoru, ve kterém docker běží.
Obecně platí /proc
mění nastavení, která jsou relevantní pro celý systém, technicky vzato, ale měníte nastavení v /proc/net
který vrací výsledky na bázi jmenného prostoru sítě.
Všimněte si, že /proc/net
je ve skutečnosti symbolický odkaz na /proc/self/net
protože skutečně odráží nastavení jmenného prostoru, ve kterém pracujete.
Docker 1.12+ má nativní podporu pro ladění hodnot sysctl uvnitř kontejnerů. Zde je výňatek z dokumentace:
Konfigurujte parametry jádra se jmenným prostorem (sysctls) za běhu
--sysctl nastavuje jmenné parametry jádra (sysctls) v kontejneru. Chcete-li například zapnout předávání IP v oboru názvů sítě kontejnerů, spusťte tento příkaz:
docker run --sysctl net.ipv4.ip_forward=1 someimage
Použijte váš příklad, správný způsob, jak zvýšit net.core.somaxconn
by bylo:
docker run ... --sysctl net.core.somaxconn=65535 ...
Privilegovaný kontejner stále používá svůj vlastní jmenný prostor procesu pro /proc
. Co můžete udělat, je připojit skutečný /proc
uvnitř kontejneru:
docker run --rm --privileged -v /proc:/host-proc ubuntu:latest \
'echo 65535 > /host-proc/sys/net/core/somaxconn'