Estou construindo um contêiner para ajustar as configurações do kernel para um balanceador de carga. Eu preferiria implantar essas alterações no host em uma imagem usando um único contêiner privilegiado. Por exemplo:
docker run --rm --privileged ubuntu:latest sysctl -w net.core.somaxconn=65535
No teste, as alterações entram em vigor, mas apenas para esse contêiner. Fiquei com a impressão de que, com um contêiner totalmente privilegiado, as alterações em / proc realmente alterariam o SO subjacente.
$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
É assim que os recipientes privilegiados devem funcionar?
Estou apenas fazendo algo bobo?
Qual é a melhor maneira de fazer mudanças duradouras?
Informação da versão:
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
Exemplo de comando com / proc montado:
$ 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