参考问题:

cuda - Using GPU from a docker container? - Stack Overflow

目录

指定显卡硬件名

nvidia-docker

Docker 19.03


指定显卡硬件名

最初的容器中使用显卡,需要指定硬件名。经历了两种方式

1. 使用lxc驱动程序运行docker守护进程,以便能够修改配置并让容器访问显卡设备(非常麻烦,参考链接中最久远的回答)

2. Docker 0.9中放弃了lxc作为默认执行上下文,但是依然需要指定显卡的名字

(1)找到你的显卡设备

ls -la /dev | grep nvidiacrw-rw-rw-  1 root root    195,   0 Oct 25 19:37 nvidia0
crw-rw-rw-  1 root root    195, 255 Oct 25 19:37 nvidiactl
crw-rw-rw-  1 root root    251,   0 Oct 25 19:37 nvidia-uvm

(2)启动容器时,指定显卡设备

 sudo docker run -ti --device /dev/nvidia0:/dev/nvidia0 --device /dev/nvidiactl:/dev/nvidiactl --device /dev/nvidia-uvm:/dev/nvidia-uvm tleyden5iwx/ubuntu-cuda /bin/bash

nvidia-docker

英伟达公司开发了nvidia-docker,该软件是对docker的包装,使得容器能够看到并使用宿主机的nvidia显卡.

本质上,他们找到了一种方法来避免在容器中安装CUDA/GPU驱动程序,并让它与主机内核模块匹配。

测试:

# Install nvidia-docker and nvidia-docker-plugin
wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb
sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb# Test nvidia-smi
nvidia-docker run --rm nvidia/cuda nvidia-smi

指定使用两张卡:

docker run --rm --gpus 2 nvidia/cuda nvidia-smi

更详细得得用法见:User Guide — NVIDIA Cloud Native Technologies documentation

另外要注意nvidia-docker包括nvidia-docker1 和 nvidia-docker2,两者命令有一定差异

Docker 19.03

从Docker 19.03开始,安装好docker之后,只需要使用 --gpus 即可指定容器使用显卡。

所有显卡都对容器可见:

docker run --gpus all --name 容器名 -d -t 镜像id

只有显卡1对容器可见:

docker run --gpus="1" --name 容器名 -d -t 镜像id

如果不指定 --gpus ,运行nvidia-smi 会提示Command not found

注意:

1. 显卡驱动在所有方式中,都要先安装好,容器是不会有显卡驱动的,一台物理机的显卡只对应一个显卡驱动,当显卡驱动安装好后(即使未安装cuda),也可以使用命令nvidia-smi

2. nvidia-smi显示的是显卡驱动对应的cuda版本,nvcc -V 显示的运行是cuda的版本

在docker容器中使用显卡相关推荐

  1. docker网络问题解决办法“大全”:关于宿主机访问不了docker容器中web服务,或者容器内访问不了外网的问题的解决办法

    docker网络问题解决办法"大全":关于宿主机访问不了docker容器中web服务,或者容器内访问不了外网的问题的解决办法 参考文章: (1)docker网络问题解决办法&quo ...

  2. 如何在Docker容器中挂载主机目录

    本文翻译自:How to mount a host directory in a Docker container I am trying to mount a host directory into ...

  3. docker安装_以简便的方式监控Docker容器中的ADF应用程序

    docker安装 在这篇简短的文章中,我将展示一种简单的方法来确保在Docker容器中运行的ADF应用程序在内存利用率方面是健康的Java应用程序. 我将使用标准工具JConsole,它是计算机上JD ...

  4. Docker容器中MySQL最大连接数被限制为214的解决方案

    Docker容器中MySQL最大连接数被限制为214的解决方案 原文:Docker容器中MySQL最大连接数被限制为214的解决方案 一.背景 话说笔者在上次的博客里简单的讲了一下调整MySQL最大连 ...

  5. Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法

    Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法 1).容器中登录my ...

  6. Docker(三):镜像导入与导出、保存与加载、在Docker容器中安装软件

    相关阅读: Docker(一):Docker的安装与常用命令 Docker(二):Docker常用命令之镜像的创建:Dockerfile 与 commit Docker(三):Docker镜像导入与导 ...

  7. docker 容器监控_以简便的方式监控Docker容器中的ADF应用程序

    docker 容器监控 在这篇简短的文章中,我将展示一种简单的方法来确保在Docker容器中运行的ADF应用程序在内存利用率方面是健康的Java应用程序. 我将使用标准工具JConsole,它是计算机 ...

  8. 轻松监控Docker容器中的ADF应用程序

    在这篇简短的文章中,我将展示一种简单的方法,以确保在Docker容器中运行的ADF应用程序在内存利用率方面是健康的Java应用程序. 我将使用标准工具JConsole,它是计算机上JDK安装的一部分. ...

  9. 解决:bash: vim: command not found、docker 容器不识别 vi / vim 、docker 容器中安装 vim

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 在 Docker 容器中编辑文件,报错如下: bash: vim: command not f ...

最新文章

  1. python代码规范化_数据标准化方法及其Python代码实现
  2. 高仿精仿手机版QQ空间应用源码
  3. 微信开发 :WeixinPayInfoCollection尚未注册Mch 问题解决
  4. 【转】sip中的subscribe和notify扩展应用技术
  5. c++ select函数_PySpark 操作函数一览
  6. apache web_Web发明家预测文化将发生变化,Apache推动一半的互联网发展,等等
  7. 百度网盘爬虫(如何爬取百度网盘)
  8. scala中的特殊字符
  9. php生成手写字,快速word手写字体在线生成器笔迹仿手写
  10. 持续集成工具Jenkins_尚硅谷视频学习笔记
  11. 时间序列分析和预测(含实例及代码)
  12. 进制转换(二进制、八进制、十进制、十六进制)涵盖整数与小数部分,超详细
  13. 基于Zigbee和LabView的无线温度采集系统
  14. Python编程之找完数
  15. 地球上最长的两座山脉:一座4800公里,一座8900公里
  16. 【无限互联】学员作品 豆果美食IOS客户端
  17. Android图片轮播控件 如果对你有帮助请star哦!
  18. 【小工具】文件夹映射为本地磁盘(重启不失效)
  19. ITTAGE分支预测器 “A 64-Kbytes ITTAGE indirect branch predictor”
  20. 2017滴滴校招 末尾0的个数(数学知识)

热门文章

  1. output在delete中的应用
  2. php的正则匹配方法preg_match_all问题
  3. 【Vegas原创】远程桌面下重启xp系统的命令
  4. 感谢大家对《软件性能测试与Loadrunner实战》的支持
  5. 《Javascript入门学习全集》 Javascript学习第一季(7)
  6. oracle与sqlserver比较
  7. java mysql jdbc 封装_利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包括增删改查、JavaBean反射原理,附源代码)...
  8. php 动态 常量,PHP中的动态常量?
  9. tmp name php,linux环境 上传文件失败 tmp_name为空
  10. proc除了能用于oracle开发_能不能用于mysql开发_MySQL 和 Oracle Enterprise Manager 开发人员 VM...