Docker-Nvidia(NVIDIA Container Toolkit)

安装NVIDIA Container Toolkit工具,支持docker使用GPU

目录

  • 1.NVIDIA Container Toolkit 安装
    • 1.1 nvidia-docker安装
    • 1.2 验证
    • 1.2.1 验证安装
      • 1.2.2 额外补充

1.NVIDIA Container Toolkit 安装

1.1 nvidia-docker安装

NVIDIA/nvidia-docker

Installing the NVIDIA Container Toolkit - 官方文档

此处使用官方文档所述的apt安装方法(Installing with Apt),其余方法见官方文档:
step1:Configure the production repository:

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

Optionally, configure the repository to use experimental packages:

sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list

step2:Update the packages list from the repository:

sudo apt-get update

step3:Install the NVIDIA Container Toolkit packages:

sudo apt-get install -y nvidia-container-toolkit

1.2 验证

1.2.1 验证安装

  • 优秀参考文章
    1.Docker和Nvidia-docker的安装、测试,及运行GUI应用

  • 启动Docker:

systemctl start docker
systemctl enable docker
  • 检查是否安装成功:
sudo docker version

nvidia给的测试镜像nvidia-docker2,
安装nvidia-docker,重启docker服务:

sudo apt-get install nvidia-docker2
sudo systemctl restart docker

载入一个镜像测试:

sudo docker pull nvidia/cuda:10.0-base nvidia-smi

如果出现下图,则nvidia-docker安装成功:
在这里插入图片描述

创建容器:

# 基于cuda10.0的镜像创建一个名为Shrimp_ball的容器
sudo docker run -idt --name Shrimp_ball --gpus all --shm-size 16G nvidia/cuda:10.0-base

这里有三个重要的参数:
–name: 容器的名称
–gpus: gpu编号,可以通过nvidia-smi查询,不启用gpu可以不写该参数,启用所有gpu可以用all
–shm-size: 共享内存的大小,即为容器中内存的大小,可按照自己的需求进行调节

新建一个容器测试一下:

sudo docker run -it --name test_nvidia_docker --gpus all nvidia/cuda:11.0-base

其中最后的参数是nvidia/cuda:11.0-base是根据我的cuda版本设置的参数,具体可以根据工作站主机的cuda版本进行修改,版本查看旧用nvcc -V查看。

进入容器之后可以跑一下nvidia-smi查看到显卡的驱动,然后就可以在docker里正常使用GPU了。

  • Error response from daemon: manifest for nvidia/cuda:latest not found: manifest unknown: manifest unknown 错误解决

Docker Hub中的CUDA, CUDAGL和OPENGL镜像已经弃用"latest"标签,可以直接使用:docker pull nvidia/cuda 或者在Dockerfile中指定:FROM nvidia/cuda:latest 都会出现Error response from daemon: manifest for nvidia/cuda:latest not found: manifest unknown: manifest unknown

解决方法:
在supported-tags中找到与自己系统对应的cuda版本,并将nvidia/cuda:latest中的latest改成对应的版本
在这里插入图片描述
如:Error response from daemon

优秀参考资料:
1.docker学习笔记(9):nvidia-docker安装、部署与使用

1.2.2 额外补充

  • 拉取Nvidia/cuda官方镜像:docker pull nvidia/cuda:10.0-base
    NVIDIA官方提供的docker镜像nvidia/cuda,里面已经编译安装了cuda,但需完善并安装cudnn.注意:这里的cuda版本要跟宿主机显卡驱动匹配.(本次安装的版本是cuda10.0)

  • 生成容器:nvidia-docker run -it --runtime=nvidia -v /宿主机绝对路径目录:/容器内目录 --name 容器名 镜像名 /bin/bash

创建镜像完毕后,进入镜像,输入nvidia-smi,如果输出下图中绿框内的指令,则表明自己的cuda容器创建成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/47106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 关键字 IN 与 EXISTS 的使用与区别

目录 1. IN & NOT IN1.1 基本使用1.2 工作原理1.2.1 静态值列表的 IN 语句1.2.2 子查询的 IN 语句 1.3 相关优化 2. EXISTS & NOT EXISTS2.1 基本使用2.2 工作原理2.3 相关优化 3. 两者区别 1. IN & NOT IN IN:IN用于判断某个字段的值是否存在于给定的…

SQL Server Query Store Settings (查询存储设置)

参考:Query Store Settings - Erin Stellato 在 SQL Server 2017 中,有九 (9) 个设置与查询存储相关。虽然这些设置记录在sys.database_query_store_options中,但我经常被问到每个设置的值“应该”是多少。我在下面列出了每个设置&am…

AI数字人直播源码解析:灰豚私有化部署背后的技术分析

随着AI数字人技术的应用潜力不断显现,与AI数字人相关的多个项目逐渐成为创业者们的重点关注对象,作为当前AI数字人典型应用场景之一的数字人直播意向人数更是屡创新高,AI数字人直播源码部署的热度也因此不断飙升,与各大数字人源码…

Centos7 安装私有 Gitlab

在 CentOS 7上,下面的命令也会在系统防火墙中打开 HTTP、HTTPS 和 SSH 访问。这是一个可选步骤,如果您打算仅从本地网络访问极狐GitLab,则可以跳过它。 sudo yum install -y curl policycoreutils-python openssh-server perl sudo systemct…

昇思25天学习打卡营第20天|应用实践之RNN实现情感分类

基本介绍 今天的应用实践是RNN实现情感分类,情感分类是自然语言处理中的经典任务,是典型的分类问题。RNN是一种循环神经网络,接收序列数据作为输入。模型训练所采用的数据集是IMDB影评数据集,数据集包含Positive和Negative两类。由…

Weird LCM Operations

我们先观察,有 ⌊ n 6 ⌋ \lfloor \frac{n}{6} \rfloor ⌊6n​⌋,我们如果每次操作三个不同的数,也需要 n 3 \frac{n}{3} 3n​次操作,所以我们考虑只操作一半的序列 跟一半有关的东西大概有:奇偶,前一半后…

数据库基础-进阶

数据库管理: *sql语句 数据库用来增删改查的语句 *** 备份 数据库的数据进行备份 * 主从复制,读写分离,高可用 原理 数据库的概念和相关的语法和规范: 数据库:组织,存储,管理数据的仓库。 数据…

Flutter中的异步操作

在Flutter及其底层语言Dart中,异步操作主要通过以下几种方式实现: Future: Future是Dart的一个核心类,用于表示一个可能在未来某个时间点返回结果的计算。当一个函数执行可能耗时的操作时(如网络请求、文件读写等)&am…

cpp 强制转换

一、static_cast static_cast 是 C 中的一个类型转换操作符,用于在类的层次结构中进行安全的向上转换(从派生类到基类)或进行不需要运行时类型检查的转换。它主要用于基本数据类型之间的转换、对象指针或引用的向上转换(即从派生…

在Linux上,你可以使用命令行工具来修改计算机的IP地址

在Linux上,你可以使用命令行工具来修改计算机的IP地址。以下是一些常见的方法: 使用ifconfig命令(传统方法) 查看当前网络接口配置: ifconfig找到你要修改的网络接口,例如eth0。 设置新的IP地址&#xff…

富格林:深思曝光纠正安全误区

富格林指出,在投资市场上,投资者进行任何交易都是以安全盈利为出发点的,伦敦金交易也不例外。投资者在进入市场做单之前可从曝光的骗局中深究亏损原因,总结应对策略预防在交易中遇到类似情况导致亏损。以下是富格林总结曝光的几点…

数据结构第32节 无锁编程

在Java中,无锁编程是一种在多线程环境下避免使用传统锁机制(如synchronized关键字或ReentrantLock)的技术。这种技术可以提高程序的并发性能,尤其是在高并发场景下,因为它减少了锁的竞争和上下文切换的开销。 数据结构…

【Java】读取超大文件的时候,如何避免出现OOM

读取超大文件的时候,如何避免出现OOM 需求背景如下: 从文件中读取数据并经过业务处理后存储到数据库中,同时避免出现OOM(Out of Memory) 1、使用分批处理文件数据 将文件数据分批读取,每次只处理一部分数…

深入理解 React 的 useSyncExternalStore Hook

深入理解 React 的 useSyncExternalStore Hook 大家好,今天我们来聊聊 React 18 引入的一个新 Hook:useSyncExternalStore。这个 Hook 主要用于与外部存储同步状态,特别是在需要确保状态一致性的场景下非常有用。本文将深入探讨这个 Hook 的…

GB和GiB的区别

GB(Gigabyte,十亿字节)和GiB(Gibibyte,吉比字节)都是数据存储单位,但它们有不同的定义和使用场景。 GB(Gigabyte) 定义: GB使用十进制系统,1 GB …

Linux系统中通过Wine运行软件实现关机功能

概述 在Linux系统中,我们开发的软件通过Wine进行适配。软件中包含一个需要执行关机操作的功能。然而,发现Windows的关机指令在Linux环境中无效,需要单独设置Linux的关机命令。 一、调用关机脚本文件执行关机 在Linux系统中,可以…

redis存入hash,key=>value和key=>(key=>value)使用Python举例

在 Redis 中,HASH 数据结构(也称为 HMAP 或 Hash Map)允许你存储键值对集合,其中每个键值对都是字段(field)和值(value)的映射。在 Python 中,你可以使用 redis-py 库来与…

Netty Bootstrap/ServerBootstrap

Netty中的Bootstrap和ServerBootstrap是Netty框架中的两个核心引导类,它们分别用于客户端和服务端的启动配置。以下是关于这两个类的详细解析: 一、基本概念 Bootstrap:客户端程序的启动引导类。主要用于配置Netty客户端的各种参数&#xf…

使用phpMyAdmin操作MYSQL(四)

一. 学会phpMyAdmin? phpMyAdminhttp://water.ve-techsz.cn/phpmyadmin/ 虽然我我们可以用命令行操作数据库,但这样难免没有那么直观,方便。所以接下来我们使用phpMyAdmin来操作MySQL,phpMyAdmin是众多MySQL图形化管理工具中使用…

编程从零基础到进阶(更新中)

题目描述 依旧是输入三个整数,要求按照占8个字符的宽度,并且靠左对齐输出 输入格式 一行三个整数,空格分开 输出格式 输出它们按格式输出的效果,占一行 样例输入 123456789 -1 10 样例输出 123456789-1 10 #include "stdio.…