Estoy construyendo un contenedor para ajustar la configuración del kernel para un equilibrador de carga. Prefiero implementar esos cambios en el host en una imagen usando un solo contenedor privilegiado. Por ejemplo:
docker run --rm --privileged ubuntu:latest sysctl -w net.core.somaxconn=65535
En la prueba, los cambios surten efecto pero solo para ese contenedor. Tenía la impresión de que con un contenedor totalmente privilegiado, los cambios en / proc cambiarían el SO subyacente.
$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
¿Es así como se supone que funcionan los contenedores privilegiados?
¿Estoy haciendo algo tonto?
¿Cuál es la mejor manera de hacer cambios duraderos?
Información de la versión:
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
Comando de ejemplo con montado / 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