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)限
