嘿伙计们,我真的很难用这个,我需要帮助。我需要在用户定义的网络上运行Redis容器并为其分配一个静态ip,所以我有这个:
docker run -v /root/test/:/data/ -p 7001:7001 --net iso_nw --ip 172.18.0.2 --name testy -d redis redis-server /data/redis.conf
这会导致我的Redis实例显示TCP积压警告:
WARNING: The TCP backlog setting of 65536 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
我的大脑正在努力使这个警告消失,而不使用--net host
。有谁可以帮助我吗。感谢。
答案 0 :(得分:1)
我明白了。好的,首先我尝试使用的TCP待办事项设置无效。允许的最大值为65535,这是一个简短的unsigned int,所以我用这个值更新了我的Redis配置。
现在我可以通过加载/ proc /作为可写卷来运行容器并回显值:
docker run -v /root/test/:/data/ -v /proc/:/wproc/ -p 7001:7001 --net iso_nw --ip 172.18.0.2 --name testy -d redis echo 65535 > /wproc/sys/net/core/somaxconn && redis-server /data/redis.conf
答案 1 :(得分:0)
docker run --name redis --rm -p 6379:6379 -ti --privileged redis:4.0.1 \
/bin/bash -c 'echo 65535 > /proc/sys/net/core/somaxconn ; redis-server'
这些是相关的发现:
--privileged
,我就无法写入容器的/proc/sys
。不要忘记对端口,名称,版本使用您自己的设置......
答案 2 :(得分:0)
最新版本的docker现在有--sysctl命令可用,所以这应该这样做:
301%103%203%2017-09-20 07:49:46 2%google
01%103%203%2017-09-20 07:49:46 3%google
01%103%203%2017-09-20 07:49:46 1%microsoft
301%105%200%2017-09-17 11:48:59 2%google 1%microsoft
301%105%200%2017-09-17 11:48:59 3%google
301%105%200%2017-09-17 11:48:59 1%microsoft
答案 3 :(得分:0)
您可以使用docker-compose完成此操作
version: '3.8'
services:
redis:
container_name: redis
image: redis
command: ["redis-server", "--appendonly", "yes"]
sysctls:
- net.core.somaxconn=65535
volumes:
- /etc/localtime:/etc/localtime:ro
- /data/redis:/data
ports:
- "6379:6379"
restart: always
volumes:
redis-data:
driver: local
然后运行docker-compose up -d