docker-compose设置容器中sysctl(容器中执行sysctl -p报错 sysctl: error setting key ‘xxx‘: Read-only file system)

文章讲述了在Docker环境中,由于容器对/proc和/sys的访问限制导致无法设置端口范围的问题。推荐使用`docker-compose`的`sysctls`选项来解决,而不推荐使用特权模式启动容器,因为后者会赋予容器过高权限且设置不持久。
摘要由CSDN通过智能技术生成

1. 错误描述

  • 需求:修改容器可用端口范围
  • 操作:将容器的/etc/sysctl.conf 文件挂载出来,并配置可用端口范围
net.ipv4.ip_local_port_range = 1024 65535
  • 报错
    端口范围的配置并没有生效。进入容器,发现文件被正常挂载了。于是手动执行一下,报错如下:
bash-5.0$ sudo sysctl -p
sysctl: error setting key 'net.ipv4.ip_local_port_range': Read-only file system
sysctl: error setting key 'fs.file-max': Read-only file system
sysctl: error setting key 'fs.nr_open': Read-only file system

2. 原因

docker 限制了对容器中 /proc/sys 的访问

3. 解决(推荐)

docker-compose 加入了sysctls选项来解决这个问题

  emqx:
    image: "emqx/emqx:4.3.11"
    sysctls:
     - net.ipv4.ip_local_port_range=1024 65535

*另一个方法(不推荐)

用特权模式启动

  • 修改docker-compose.yml 文件
version: "3.1"
services:
 emqx:
   image: "emqx/emqx:4.3.11"
   privileged: true #加入这一行
  • 启动容器后,在容器中执行:
sysctl -p
  • 不推荐原因:
    • 重启就没了
    • 容器获得了过高的权限

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄德公笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值