解决docker中redis警告
The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128
- 我尝试直接修改宿主机的somaxconn参数,并设置 sysctl.conf 的 somaxconn全部不行。
- 之后又尝试在宿主机中修改somaxconn参数依然不行 最后我尝试在创建容器的时候修改somaxconn参数,还是不行
说个题外话,如果想要子在创建容器后执行多条命令,可以使用 sh -c “命令1 && 命令2 && 命令3” 这种模式
例如:这个是我尝试在容器启动时修改参数,但是失败了
docker run -p 6388:6379 --name redis6388 --sysctl net.core.somaxconn=1024 \
-v /mnt/docker/redis6388/data:/data \
-v /mnt/docker/redis6388/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-d --restart=always redis \
sh -c "redis-server /usr/local/etc/redis/redis.conf --appendonly yes && sudo echo 511 > /proc/sys/net/core/somaxconn"
终极解决方案
首先查看docker run --help 中是否有 –sysctl这个参数,如果有的话,可以使用下述命令解决此警告,命令如下:
docker run -p 6399:6379 --name redis6399 --sysctl net.core.somaxconn=1024 \
-v /mnt/docker/redis6399/data:/data \
-v /mnt/docker/redis6399/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /proc/sys/net/core/somaxconn:/proc/sys/net/core/somaxconn \
-e TIME_ZONE="Asia/Shanghai" -e TZ="Asia/Shanghai" \
-d --restart=always redis redis-server /usr/local/etc/redis/redis.conf \
--appendonly yes
重点在 –sysctl net.core.somaxconn=1024 这里,至此问题解决
附加送解决redis时区不同步问题:
-e TIME_ZONE=“Asia/Shanghai” -e TZ=“Asia/Shanghai”