Diese spezielle Einstellung unterliegt dem Einfluss des Netzwerk-Namensraums, in dem Docker ausgeführt wird.
In der Regel /proc
ändert Einstellungen, die systemweit relevant sind, technisch gesehen ändern Sie jedoch Einstellungen in /proc/net
die Ergebnisse pro Netzwerk-Namespace zurückgibt.
Beachten Sie, dass /proc/net
ist eigentlich ein symbolischer Link zu /proc/self/net
da es wirklich die Einstellungen des Namensraums widerspiegelt, in dem Sie die Arbeit erledigen.
Docker 1.12+ bietet native Unterstützung zum Optimieren von sysctl-Werten in den Containern. Hier ein Auszug aus der Dokumentation:
Namespace-Kernelparameter (sysctls) zur Laufzeit konfigurieren
Das --sysctl setzt Namespace-Kernel-Parameter (sysctls) im Container. Um beispielsweise die IP-Weiterleitung im Netzwerk-Namespace des Containers zu aktivieren, führen Sie diesen Befehl aus:
docker run --sysctl net.ipv4.ip_forward=1 someimage
Anhand Ihres Beispiels die richtige Art und Weise, net.core.somaxconn
zu erhöhen wäre:
docker run ... --sysctl net.core.somaxconn=65535 ...
Der privilegierte Container verwendet immer noch seinen eigenen Prozessnamensraum für /proc
. Was Sie tun können, ist, den echten /proc
zu mounten im Container:
docker run --rm --privileged -v /proc:/host-proc ubuntu:latest \
'echo 65535 > /host-proc/sys/net/core/somaxconn'