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

 

 

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
  • 不推荐原因:
    • 重启就没了
    • 容器获得了过高的权限

在这里插入图片描述

posted on   运维开发玄德公  阅读(448)  评论(0编辑  收藏  举报  

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示