Docker Redis容器在用户定义的网络中获取警告:/ proc / sys / net / core / somaxconn

时间:2016-03-08 21:22:21

标签: docker redis

嘿伙计们,我真的很难用这个,我需要帮助。我需要在用户定义的网络上运行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。有谁可以帮助我吗。感谢。

4 个答案:

答案 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'

这些是相关的发现:

  • 必须引用嵌套命令(传递给bash)。
  • 如果没有--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