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

  • 不推荐缘由:
    • 重启就没了
    • 容器获得了过高的权限

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

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 共1条

请登录后发表评论

    暂无评论内容