You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux Docker容器中Ray运行失败求助(已尝试多种方案)

Ray在Linux Docker容器中初始化失败的解决思路

本地Mac运行正常的Ray 2.1.0代码,部署到基于python:3.10.9-slim-bullseye(指定--platform=linux/amd64)的Docker容器后,先触发/dev/shm空间不足警告,随后启动本地Ray实例,但很快报错:

core_worker.cc:179: Failed to register worker
01000000ffffffffffffffffffffffffffffffffffffffffffffffff to Raylet. IOError:
[RayletClient] Unable to register worker with raylet. No such file or directory

已尝试增大/dev/shm空间、限制CPU数量、指定_plasma_directory参数,但问题未解决。

解决思路

1. 修正Docker的/dev/shm配置与权限

  • 启动容器时明确指定--shm-size(建议设为容器可用内存的30%以上),同时确保容器内/dev/shm权限正确:
    docker run --shm-size=4g --your-other-options your-image
    
  • 若使用docker-compose,在服务配置中添加:
    services:
      your-service:
        shm_size: '4g'
        # 其他容器配置
    
  • 进入容器后检查/dev/shm权限,确保Ray进程有读写权限:
    ls -ld /dev/shm
    # 正常输出应为 drwxrwxrwt root root
    

2. 调整Ray初始化的参数组合

  • 同时指定num_cpus、_temp_dir和正确的_plasma_directory(注意用绝对路径,之前的dev/shm/缺少根目录):
    ray.init(
        num_cpus=2,  # 根据容器CPU配额设置,不超过可用核数
        _temp_dir="/tmp/ray-tmp",
        _plasma_directory="/dev/shm"
    )
    
  • 临时排查可禁用共享内存,强制Ray用磁盘存储对象(性能会下降,仅用于验证):
    ray.init(object_store_memory=0)
    

3. 补充Docker容器的系统依赖

python:slim-bullseye缺少Ray运行所需的部分基础系统库,在Dockerfile中添加安装命令:

RUN apt-get update && apt-get install -y --no-install-recommends \
    libglib2.0-0 \
    libnss3 \
    libgconf-2-4 \
    libfontconfig1 \
    && rm -rf /var/lib/apt/lists/*

4. 调整Ray版本

Ray 2.1.0存在部分Docker环境下的兼容性问题,尝试升级到2.2.0+或降级到2.0.0版本:

# 升级版本
pip install ray==2.2.0
# 降级版本
pip install ray==2.0.0

5. 排查容器内的套接字与临时目录权限

  • Ray依赖本地套接字进行进程通信,确保/tmp目录权限正常且未被设为只读:
    docker run --mount type=tmpfs,destination=/tmp,tmpfs-mode=1777 --your-other-options your-image
    
  • 启动Ray时明确指定套接字路径:
    ray.init(raylet_socket_name="/tmp/ray/raylet.sock")
    

内容的提问来源于stack exchange,提问作者HagaiA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 20:50:26