我在具有多个服务的 docker swarm 中使用 RabbitMQ,所有其他服务都启动正常,但 RabbitMQ 容器没有,并且日志显示以下错误:
Failed to create thread: Operation not permitted (1)
Aborted (core dumped)
我的 docker-compose.yml 文件如下所示:
version: "3.6"
networks:
rabbitmq:
driver: overlay
attachable: true
x-logging: &default-logging
driver: json-file
options:
max-size: "10m"
max-file: "5"
services:
rabbitmq:
image: rabbitmq:3
hostname: rabbitmq
logging: *default-logging
deploy:
mode: replicated
replicas: 1
labels:
- "traefik.enable=false"
networks:
- rabbitmq
我尝试传递这个环境变量:
enviroment:
- RABBITMQ_IO_THREAD_POOL_SIZE=10 # Decreasing the number of threads
这是为了减少线程数量,以防出现问题,但没有区别。
什么可能导致此错误,我该如何修复它?
提前致谢
给容器添加root权限即可解决
privileged: true
我在 Azure Pipelines 上运行的官方 RabbitMQ docker 映像也遇到了同样的问题:
Failed to create thread: Operation not permitted (1)
Aborted (core dumped)
使用以下 docker-compose 文件:
rabbit:
image: rabbitmq:3.10
container_name: "rabbit_run_${IMAGE_TAG}"
volumes:
- ./config/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
我尝试在相同的环境中切换到 bitnami/rabbitmq:3.11,这对我有用。然而,这是一种解决方法,而不是解决官方图像问题的解决方案:
rabbit:
image: bitnami/rabbitmq:3.11
container_name: "rabbit_run_${IMAGE_TAG}"
volumes:
- ./config/rabbitmq.conf:/bitnami/rabbitmq/conf/custom.conf:ro
您使用什么版本的
Docker
?
我使用 Docker v19.03
时遇到了同样的问题,但更新到 Docker v24.0.5
解决了我的问题。