如何修复运行 redis:alpine Docker 镜像时出现的警告

2024-03-03

如果我运行Redis:高山 https://hub.docker.com/_/redis/使用命令的 Docker 镜像

docker run redis:alpine

我看到几个警告:

1:C 08 May 08:29:32.308 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.2.8 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 1
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

1:M 08 May 08:29:32.311 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1:M 08 May 08:29:32.311 # Server started, Redis version 3.2.8
1:M 08 May 08:29:32.311 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
1:M 08 May 08:29:32.311 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
1:M 08 May 08:29:32.311 * The server is now ready to accept connections on port 6379

我尝试使用以下方法修复前两个警告Dockerfile:

FROM redis:alpine
COPY somaxconn /proc/sys/net/core/somaxconn
COPY sysctl.conf /etc/sysctl.conf
CMD ["redis-server", "--appendonly", "yes"]

我的本地文件在哪里somaxconn包含单个条目511 and sysctl.conf包含行vm.overcommit_memory = 1。但是,当我构建和运行容器时,我仍然收到相同的警告。

我怎样才能摆脱这些警告? (其中提到了这些问题https://www.techandme.se/performance-tips-for-redis-cache-server/ https://www.techandme.se/performance-tips-for-redis-cache-server/但那里描述的解决方案涉及修改rc.local https://www.raspberrypi.org/documentation/linux/usage/rc-local.md,似乎与 Raspberry Pi 有关)。


处理事情的方式不好: /proc是只读文件系统,要修改它,您可以在特权模式下运行 Docker,而不是在容器启动后对其进行修改。

如果在特权模式下运行容器,您可以使用以下命令禁用 THP:

# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# echo never > /sys/kernel/mm/transparent_hugepage/defrag

合适的方式:确保运行较新版本的 Docker(如果需要,请升级)。run子命令具有 --sysctl 选项:

$ docker run -ti --sysctl net.core.somaxconn=4096 --rm redis:alpine /bin/sh
root@9e850908ddb7:/# sysctl net.core.somaxconn
net.core.somaxconn = 4096
...

很遗憾: vm.overcommit_memory目前不允许通过设置--sysctl参数同样适用于 THP (transparent_hugepage),这是因为它们没有命名空间。因此,要修复 Linux 主机上运行的容器中的这些警告,您可以直接在主机上更改它们。这里是相关问题:

  • #19 https://github.com/docker-library/redis/issues/19
  • #55 https://github.com/docker-library/redis/issues/55

您不需要特权模式合适的方式方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修复运行 redis:alpine Docker 镜像时出现的警告 的相关文章

随机推荐

  • WPF MenuItem.Icon 尺寸

    所以我有一个 MenuItem 在 ContextMenu 中 如果它确实有影响 我不认为它有影响 我想使用 MenuItem Icon 属性在 MenuItem 中显示图标 下面是执行此操作的 XAML 代码
  • HttpClient PCL Cookie 未应用于请求

    我使用 NET HttpClient for PCL 2 2 15 作为跨 Windows Phone 8 Windows 8 和 NET 4 5 的通用库 但是 我没有看到 cookie 被应用于请求 我使用以下代码设置 HttpClie
  • 这段代码是什么意思“ofstream fout(getenv("OUTPUT_PATH"));”

    我对 cpp 还是个新手 如果有人能帮助我理解这行代码 我将不胜感激 ofstream fout getenv OUTPUT PATH 这段代码我几乎看到了每一个 Hackerrank 挑战 这段代码的目的是什么 我说 当有疑问时 简化 当
  • ListView 滚动混乱

    我扩展了基本适配器 我遇到了一些奇怪的问题 当我滚动此列表视图时 我的最后一个项目被第一个项目替换 下次当我滚动时 另一个项目等等 有时它是正确的 为什么这段代码会发生这种情况 Override public View getView fi
  • 如何让 DataAnnotations 在 asp.net 4.5 WebForms 中工作?

    我正在使用带有模型绑定和实体框架 5 的 net 4 5 WebForms 我的网络表单的一部分
  • Invoke-ASCmd :身份验证失败:用户界面不可用时需要用户 ID 和密码

    我正在尝试使用 Azure DevOps 通过 CICD 刷新 已 部署的表格模型的凭据 利用调用ASCmd在 PowerShell 中刷新凭据 当我提供租户 ID 应用程序 ID 和密钥时 该脚本在本地运行良好 但是 当我从 Azure
  • 无法构建:如何为新模块添加 Android 构建配置

    现在我正在将我的 Android 代码转换为模块化架构方法 尝试从 聊天 模块添加对 应用程序 模块的依赖项时遇到问题 我有以下 app 模块的构建配置 android lintOptions checkReleaseBuilds fals
  • 当 filesystem::path 被破坏时程序崩溃

    以下程序崩溃 include
  • 右值引用上的 std::vector::emplace_back

    我在类中有以下函数 void add state std string st state emplace back st state is a vector st根据我的理解 是一个左值 在这种情况下对字符串的右值引用 如果 我想搬家st到
  • 在 Angular2 中添加动态属性

    我有现有的 javascript 函数 用于使用 setAttribute 函数创建动态元素 现在我想将属性 ngModel 附加到此元素中以进行双向数据绑定 我尝试添加这个使用 obj setAttribute ngModel 模型名称
  • macOS Safari 缓存响应,而标头指定不缓存

    服务器对 GET 请求的响应具有以下标头 HTTP 1 1 200 OK Content Type application json charset utf 8 Pragma no cache Date Thu 08 Feb 2018 19
  • 使用我自己的 SSL 证书与 Google Cloud Run(完全托管)进行 SSL 固定

    我想要固定完全托管的 Google Cloud Run 集群的证书 我可以固定 Google 生成的 SSL 证书 但我不知道我是否可以依赖他们保留相同的证书直到其过期 而且我无法让客户端为他们将来生成的 SSL 证书做好准备 因为我不在
  • Unix,将文件分割成最大 N 字节的块,保持完整的行

    我想将文件拆分为最大 N 字节的块 同时保留完整的行 类似下面的内容在精确的字节边界上分解每个块的第一行和最后一行 split b 100m d data tsv data tsv 听起来像是一份工作split C split C 100m
  • 检索 Excel 中列等于某值的单元格列表

    我正在尝试在 Excel 中执行某些操作而不使用 VBA 宏 我怀疑这是可能的 但到目前为止还有一些空的 基本上 对于表中的值 我想有条件地检索 A 列中所有值的列表 其中 B 列等于我提供的值 例如 如果 B 列等于 0 我想要一个函数
  • 如何检查 Google Test 是否在我的代码中运行

    我有一段代码 如果正在进行单元测试 我不想运行它 我希望找到一些由 gtest 库设置的 define 标志 我可以检查 我找不到用于此目的的一个 但在查看 gtest 标头后 我找到了一个我认为可以像这样使用的 SomeClass Som
  • 如何同时拖动两个 3D 轴

    基本上 我在一个图中有两个 3d 轴 一个通过 matplotlib animation 构建的动画轴和一个并排的 3d 线图 我想添加功能 以便当您旋转一个轴时 另一个轴也会跟随它的旋转 例如 将当前视角发送到另一个轴的函数 例如 ang
  • 在 Docker 中运行 Blazor

    我使用 Visual Studio 2019 预览版 创建了第一个 Blazor 测试 回购协议是here https github com mitkins holly test 当我在 VS 中点击 IISExpress 按钮时 一切都按
  • Amazon Linux 2 OpenVPN 客户端包不可用?

    当我尝试跑步时sudo yum install openvpn在我刚刚创建的 Amazon Linux 2 实例上 我收到消息 No package openvpn available 我需要添加包存储库吗 我在任何地方都没有发现需要这样做
  • 如何在flutter中过滤列表?

    我正在尝试向我的过滤器添加过滤器list 这就是我所做的 productTemp sort a b gt b productPrice compareTo a productPrice productTemp productTemp whe
  • 如何修复运行 redis:alpine Docker 镜像时出现的警告

    如果我运行Redis 高山 https hub docker com redis 使用命令的 Docker 镜像 docker run redis alpine 我看到几个警告 1 C 08 May 08 29 32 308 Warning