1. 錯誤描述
- 需求:修改容器可用端口范圍
- 操作:將容器的/etc/sysctl.conf 文件掛載出來放前,并配置可用端口范圍
net.ipv4.ip_local_port_range = 1024 65535
- 報錯
端口范圍的配置并沒有生效。進入容器燎孟,發(fā)現(xiàn)文件被正常掛載了证鸥。于是手動執(zhí)行一下,報錯如下:
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 #加入這一行
- 啟動容器后别凤,在容器中執(zhí)行:
sysctl -p
- 不推薦原因:
- 重啟就沒了
- 容器獲得了過高的權限