我在docker-compose文件中有一个sysctls设置,但是据我了解,该指令在版本3中被忽略:
sysctls:
- net.core.somaxconn = 65536
- net.ipv4.tcp_max_tw_buckets = 1440000
- net.ipv4.ip_local_port_range = 1024 65000
- net.ipv4.tcp_fin_timeout = 15
- net.ipv4.tcp_window_scaling = 1
- net.ipv4.tcp_max_syn_backlog = 3240000
- fs.file-max = 20480
我需要找到另一种设置这些参数的方法,但是我无法从文档中准确地找到方法(尝试RUN和CMD),并且需要一个清晰的示例来说明如何执行此操作。
我了解通常在命令行中它是这样的:
sudo sysctl -w net.core.somaxconn=65536
谢谢。
最佳答案
对于版本3的docker-compose文件,该选项仍可与docker-compose一起使用,但不适用于docker swarm。
这是因为sysctl
读取并修改了系统内核的属性,因此在容器中运行它是没有意义的。 Docker swarm不再支持它是合乎逻辑的,因为如果您全部有2个堆栈/docker-compose.yml都使用此指令,则会发生冲突。
因此,唯一的方法是在主机上运行命令。
关于 docker 撰写3 sysctls指令不受支持,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44525301/