Windows系统Docker Desktop中Solace镜像启动失败求助
解决Solace PubSub Standard容器共享内存不足问题的实用思路
先查Docker Desktop的全局共享内存限制
Docker Desktop有自己的全局共享内存上限,就算你启动容器时加了--shm-size=3g,如果全局设置比这个值小,容器实际能用的还是受全局约束:
- 打开Docker Desktop的设置,找到Resources > Advanced(不同版本位置可能有差异,比如有的在Settings > Resources > Memory里)
- 把“Shared Memory”(共享内存)调到1GB以上,建议直接设3GB,保存后重启Docker Desktop
确认容器启动命令的参数位置
--shm-size参数放错位置会直接失效,一定要放在镜像名称前面:
- 正确的启动命令参考:
要是把参数放在镜像名后面,Docker会把它当成镜像的启动参数,根本不会生效docker run -d --name solace -p 8080:8080 -p 55555:55555 --shm-size=3g solace/solace-pubsub-standard:latest
验证容器实际的共享内存大小
启动容器后,进去看看/dev/shm的真实大小,确认参数有没有生效:
- 进入容器:
docker exec -it solace /bin/bash - 查看共享内存:
或者用df -h /dev/shmmount | grep shm,如果显示的大小还是只有几十MB,说明参数没起作用,回头检查全局设置或者命令格式
试试挂载主机目录替代默认/dev/shm
要是全局设置调了还是不行,可以直接挂载主机上的目录当容器的共享内存:
- 启动命令改成这样:
注意docker run -d --name solace -p 8080:8080 -p 55555:55555 -v /path/to/host/shm:/dev/shm solace/solace-pubsub-standard:latest/path/to/host/shm是你主机上的目录,要确保这个目录有足够空间和权限,而且主机内存够支撑这个挂载的使用
检查Docker Desktop版本
有些旧版本的Docker Desktop存在--shm-size的bug,试试升级到最新稳定版,再重新启动容器测试
内容的提问来源于stack exchange,提问作者Tech123
相关产品推荐
相关产品推荐

