docker-compose設(shè)置容器中sysctl(容器中執(zhí)行sysctl -p報(bào)錯(cuò) sysctl: error setting key ‘xxx‘: Read-only file system)

1. 錯(cuò)誤描述

  • 需求:修改容器可用端口范圍
  • 操作:將容器的/etc/sysctl.conf 文件掛載出來,并配置可用端口范圍
net.ipv4.ip_local_port_range = 1024 65535
  • 報(bào)錯(cuò)
    端口范圍的配置并沒有生效。進(jìn)入容器,發(fā)現(xiàn)文件被正常掛載了。于是手動(dòng)執(zhí)行一下,報(bào)錯(cuò)如下:
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 限制了對(duì)容器中 /proc/sys 的訪問

3. 解決(推薦)

docker-compose 加入了sysctls選項(xiàng)來解決這個(gè)問題

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

*另一個(gè)方法(不推薦)

用特權(quán)模式啟動(dòng)

  • 修改docker-compose.yml 文件
version: "3.1"
services:
 emqx:
   image: "emqx/emqx:4.3.11"
   privileged: true #加入這一行
  • 啟動(dòng)容器后,在容器中執(zhí)行:
sysctl -p
  • 不推薦原因:
    • 重啟就沒了
    • 容器獲得了過高的權(quán)限

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容