RHEL7.9下Docker与Docker-Compose旧版本运行问题问询
旧版Docker/docker-compose在RHEL7.9上的问题与解决办法
环境背景
我在运行RHEL 7.9的服务器上使用旧版本的容器工具:
- Docker版本:
1.13.1, build 0be3e21/1.13.1 - docker-compose版本:
1.18.0, build 8dd22a9
使用的docker-compose.yml(仅展示核心配置):
version: '3' services: fc-1: image: fc cpuset: '0,2,4,6,8,10' container_name: 'fc-1' restart: 'unless-stopped' network_mode: 'host' volumes: - /etc/fc:/etc/fc environment: ... fc-2: image: fc cpuset: '1,3,5,7,9,11' container_name: 'fc-2' restart: 'unless-stopped' network_mode: 'host' volumes: - /etc/fc:/etc/fc environment: ...
遇到的问题
问题1:docker-compose up报错不支持cpuset
执行docker-compose up时触发配置校验错误:
ERROR: The Compose file './docker-compose.yml' is invalid because: Unsupported config option for services.fc-1: 'cpuset' Unsupported config option for services.fc-2: 'cpuset'
问题2:注释cpuset后仍报错线程创建失败
注释掉cpuset相关配置后,运行容器时出现运行时错误:
runtime/cgo: pthread_create failed: Operation not permitted SIGABRT: abort
问题分析与解决办法
1. 版本兼容性问题确认
你遇到的两个问题均与Docker、docker-compose版本过旧直接相关:
cpuset字段问题:早期docker-compose(如1.18.0)对Compose文件3.x版本的支持不完善,cpuset是Compose 2.x版本原生支持的配置项。- 线程创建失败问题:旧版Docker默认的seccomp安全配置限制了线程创建操作,导致
pthread_create调用被拒绝。
2. 新版本Docker在RHEL7上的支持情况
Docker官方支持在RHEL 7上运行较新版本的Docker(如Docker Engine - Community 20.10系列),只需按照官方指引配置对应yum源后即可完成安装升级。
3. 具体修复方案
解决cpuset字段不支持问题
将docker-compose.yml中的Compose版本从version: '3'改为version: '2',即可正常使用cpuset配置,修改后示例:
version: '2' services: fc-1: image: fc cpuset: '0,2,4,6,8,10' # 其余配置保持不变
解决线程创建失败问题
在docker-compose.yml中通过security_opt字段添加seccomp配置,示例:
services: fc-1: image: fc security_opt: - seccomp=unconfined # 其余配置保持不变
内容的提问来源于stack exchange,提问作者Rayne
相关产品推荐
相关产品推荐

