Ich baue einen Container, um die Kerneleinstellungen für einen Load Balancer zu optimieren. Ich würde es vorziehen, diese Änderungen mit einem einzigen privilegierten Container auf dem Host in einem Image bereitzustellen. Beispielsweise:
docker run --rm --privileged ubuntu:latest sysctl -w net.core.somaxconn=65535
Beim Testen werden die Änderungen wirksam, jedoch nur für diesen Container. Ich hatte den Eindruck, dass mit einem vollständig privilegierten Container Änderungen an / proc tatsächlich das zugrunde liegende Betriebssystem ändern würden.
$docker run --rm --privileged ubuntu:latest \
sysctl -w net.core.somaxconn=65535
net.core.somaxconn = 65535
$ docker run --rm --privileged ubuntu:latest \
/bin/bash -c "sysctl -a | grep somaxconn"
net.core.somaxconn = 128
Sollen privilegierte Container so funktionieren?
Mache ich nur etwas Dummes?
Was ist der beste Weg, um dauerhafte Veränderungen vorzunehmen?
Versions Information:
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): linux/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8
Beispielbefehl mit mount / proc:
$ docker run -v /proc:/proc ubuntu:latest \
/bin/bash -c "sysctl -a | grep local_port"
net.ipv4.ip_local_port_range = 32768 61000
$ docker run -v /proc:/proc --privileged ubuntu:latest \
/bin/bash -c "sysctl -p /updates/sysctl.conf"
net.ipv4.ip_local_port_range = 2000 65000
$ docker run -v /proc:/proc ubuntu:latest \
/bin/bash -c "sysctl -a | grep local_port"
net.ipv4.ip_local_port_range = 32768 61000
$ docker run -v /proc:/proc --privileged ubuntu:latest \
/bin/bash -c "sysctl -a | grep local_port"
net.ipv4.ip_local_port_range = 32768 61000