मैं एक लोड बैलेंसर के लिए कर्नेल सेटिंग्स ट्यून करने के लिए एक कंटेनर बना रहा हूँ। मैं एक एकल विशेषाधिकार प्राप्त कंटेनर का उपयोग करके छवि में होस्ट को उन परिवर्तनों को तैनात करना चाहता हूं। उदाहरण के लिए:
docker run --rm --privileged ubuntu:latest sysctl -w net.core.somaxconn=65535
परीक्षण में परिवर्तन प्रभावी होते हैं लेकिन केवल उस कंटेनर के लिए। मैं इस धारणा के तहत था कि पूर्ण रूप से विशेषाधिकार प्राप्त कंटेनर के साथ / खरीद वास्तव में अंतर्निहित ओएस को बदल देगा।
$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
क्या यह विशेषाधिकार प्राप्त कंटेनरों को काम करने के लिए माना जाता है?
क्या मैं सिर्फ मूर्खतापूर्ण कुछ कर रहा हूं?
स्थायी परिवर्तन करने का सबसे अच्छा तरीका क्या है?
संस्करण की जानकारी:
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
उदाहरण के साथ घुड़सवार / 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