开启GPU访问后docker-compose up启动容器卡住的原因排查
排查与修复步骤
验证Docker GPU运行环境
在主机终端执行docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi,如果能正常输出GPU硬件信息,说明Docker的GPU runtime没问题;如果报错,先修复基础环境:安装nvidia-docker2,确保/etc/docker/daemon.json包含"default-runtime": "nvidia",然后重启Docker服务(systemctl restart docker)。修正docker-compose的GPU配置格式
原配置缺少驱动指定,容易导致识别异常,改成以下明确写法:deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu]单GPU场景也可以指定设备ID:
deploy: resources: reservations: devices: - driver: nvidia device_ids: ['0'] capabilities: [gpu]查看容器启动日志定位问题
执行docker logs -f pose-estimation-tests-app-1,查看容器启动时的报错信息,比如GPU驱动版本不兼容、权限不足,或者test.py在GPU环境下出现执行异常。匹配TensorFlow镜像与主机CUDA版本
tensorflow/tensorflow:latest-gpu的CUDA版本可能和主机NVIDIA驱动不匹配。先通过nvidia-smi查看主机支持的CUDA版本,再选择对应版本的TensorFlow镜像,比如主机CUDA为11.8时,使用tensorflow/tensorflow:2.15.0-gpu(该版本对应CUDA 11.8)。降级使用runtime字段(适配低版本Docker Compose)
如果Docker Compose版本低于2.0,deploy字段的GPU配置可能不生效,改用runtime字段:services: app: build: . volumes: - .:/project runtime: nvidia
内容的提问来源于stack exchange,提问作者Hayden

