问题描述:

使用Docker启动rocketmq-dashboard 的时候, 容器在启动几秒后自动退出 , 或者不退出,但里面的服务无法启动成功。出现了如下报错

我使用的启动命令为:

docker run -d --name rocketmq-dashboard -p 8066:8080 --network rocketmq -e "JAVA_OPTS=-Xmx200M -Xms200M -Xmn100M -Drocketmq.namesrv.addr=14.103.234.208:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" apacherocketmq/rocketmq-dashboard

官网的启动命令:

docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" -p 8080:8080 -t apacherocketmq/rocketmq-dashboard:latest

按道理来说是没有问题了,既是我不设置jvm内存配置,也会报内存不足的错误导致无法启动

解决方式:

查了下资料加上了以下参数:

--ulimit nofile=60000:60000 --ulimit nproc=60000:60000

完整启动命令:

docker run --ulimit nofile=60000:60000 --ulimit nproc=60000:60000 -d --name rocketmq-dashboard -p 8066:8080 --network rocketmq -e "JAVA_OPTS=-Xmx200M -Xms200M -Xmn100M -Drocketmq.namesrv.addr=14.103.234.208:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" apacherocketmq/rocketmq-dashboard

然后就可以正常启动了

总结:

调整ulimit值

临时调整

在启动容器时,可以通过docker run命令添加--ulimit参数来临时调整文件描述符的限制:

docker run --ulimit nofile=60000:60000 --ulimit nproc=60000:60000 your_image

永久调整

编辑Docker的systemd配置文件/etc/systemd/system/docker.service.d/override.conf,添加默认的ulimit配置:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --default-ulimit nofile=60000:60000 --default-ulimit nproc=60000:60000 -H fd://

重启Docker服务:

systemctl daemon-reload
systemctl restart docker
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐