Ansible部署GPU Docker容器遇gpus参数不支持,求解决方案及Toolkit集成
问题与解决方案
问题背景
想要编写Ansible Playbook实现以下Docker命令的功能:
docker run --rm --gpus all -d -p 9400:9400 --name dcgm-exporter nvidia/dcgm-exporter
尝试的Playbook配置如下:
- name: Run DCGM Exporter Container community.docker.docker_container: name: dcgm-exporter image: nvidia/dcgm-exporter restart_policy: unless-stopped gpus: all published_ports: - "9400:9400" state: started detach: yes
执行后报错:
Unsupported parameters for (community.docker.docker_container) module: gpus.
解决方案
1. 解决gpus参数不支持的问题
该错误是因为使用的community.docker.docker_container模块版本过低,3.0.0及以上版本才引入了gpus参数,可通过两种方式处理:
方式一:升级community.docker集合
在控制节点执行命令升级集合,或在Playbook中添加升级任务:
ansible-galaxy collection install community.docker --upgrade
升级后,原有Playbook的gpus: all参数即可正常生效。
方式二:不升级模块,用runtime参数替代
若无法升级模块,可指定Docker runtime为nvidia(需目标主机已安装NVIDIA Docker Container Toolkit),配置如下:
- name: Run DCGM Exporter Container community.docker.docker_container: name: dcgm-exporter image: nvidia/dcgm-exporter restart_policy: unless-stopped runtime: nvidia published_ports: - "9400:9400" state: started detach: yes
runtime: nvidia会自动让容器获取所有GPU权限,等价于--gpus all的效果。
2. 集成NVIDIA Docker Container Toolkit
要让Docker容器访问GPU,目标主机必须先安装NVIDIA Docker Container Toolkit,以下是Ubuntu系统的Ansible安装任务:
- name: Install NVIDIA Docker Container Toolkit hosts: your_target_hosts tasks: - name: Import NVIDIA GPG key apt_key: url: https://nvidia.github.io/libnvidia-container/gpgkey state: present - name: Add NVIDIA Docker repository apt_repository: repo: "deb https://nvidia.github.io/libnvidia-container/stable/ubuntu$(lsb_release -rs) /" state: present filename: nvidia-container-toolkit.list - name: Install NVIDIA Container Toolkit package apt: name: nvidia-container-toolkit state: latest update_cache: yes - name: Restart Docker service to apply changes service: name: docker state: restarted
(如果是CentOS/RHEL系统,需替换为yum/dnf相关模块及对应仓库地址)
安装完成后,Docker即可识别nvidia runtime,配合上述Playbook配置就能让容器正常访问GPU。
内容的提问来源于stack exchange,提问作者Toni
相关产品推荐
相关产品推荐

