nvidia-docker的安装_安装nvidia docker-程序员宅基地

技术标签: cuda  运维  linux  docker  

  • cpu架构:x86
  • 操作系统:ubuntu18.04

受够了TensorRT+cuda+opencv+ffmpeg+x264运行环境的部署的繁琐,每次新服务器上部署环境都会花费很大的精力去部署环境,听说nvidia-docker可以省去部署的麻烦,好多人也推荐使用docker方便部署,咱也在网上搜索了下,学习了下,根据网上的资料,开始安装docker学习一下,把学习记录记在这儿,听说要想使用GPU,就要安装Docker-CE和NVIDIA Container Toolkit,好的,开始。

1.安装Dokcer-CE

首先,我的机器上没有安装过docker,要先把docker安装上,执行以下脚本,开始安装。

 curl https://get.docker.com | sh \
>   && sudo systemctl --now enable docker

控制台输出结果如下:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 19325  100 19325    0     0   2210      0  0:00:08  0:00:08 --:--:--  4718
# Executing docker install script, commit: 3255aa3919e7281693f62855b9d543bb50f04957
+ sudo -E sh -c apt-get update -qq >/dev/null
[sudo] dingxin 的密码: 
+ sudo -E sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
+ sudo -E sh -c mkdir -p /etc/apt/keyrings && chmod -R 0755 /etc/apt/keyrings
+ sudo -E sh -c curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" | gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg
gpg: WARNING: unsafe ownership on homedir '/home/dingxin/.gnupg'
+ sudo -E sh -c chmod a+r /etc/apt/keyrings/docker.gpg
+ sudo -E sh -c echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu bionic stable" > /etc/apt/sources.list.d/docker.list
+ sudo -E sh -c apt-get update -qq >/dev/null
+ sudo -E sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq --no-install-recommends docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-scan-plugin >/dev/null
+ version_gte 20.10
+ [ -z  ]
+ return 0
+ sudo -E sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker-ce-rootless-extras >/dev/null
+ sudo -E sh -c docker version
Client: Docker Engine - Community
 Version:           20.10.16
 API version:       1.41
 Go version:        go1.17.10
 Git commit:        aa7e414
 Built:             Thu May 12 09:17:28 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.16
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.10
  Git commit:       f756502
  Built:            Thu May 12 09:15:33 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.4
  GitCommit:        212e8b6fa2f44b9c21b2798135fc6fb7c53efc16
 runc:
  Version:          1.1.1
  GitCommit:        v1.1.1-0-g52de29d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

================================================================================

To run Docker as a non-privileged user, consider setting up the
Docker daemon in rootless mode for your user:

    dockerd-rootless-setuptool.sh install

Visit https://docs.docker.com/go/rootless/ to learn about rootless mode.


To run the Docker daemon as a fully privileged service, but granting non-root
users access, refer to https://docs.docker.com/go/daemon-access/

WARNING: Access to the remote API on a privileged Docker daemon is equivalent
         to root access on the host. Refer to the 'Docker daemon attack surface'
         documentation for details: https://docs.docker.com/go/attack-surface/

================================================================================

Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable docker

安装结束后,查看Docker版本:

docker --version

结果如下:

Docker version 20.10.16, build aa7e414

说明安装成功

安装NVIDIA Container Toolkit

执行以下脚本:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
   && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

控制台输出如下:

[sudo] dingxin 的密码: 
OK
deb https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/$(ARCH) /
#deb https://nvidia.github.io/libnvidia-container/experimental/ubuntu18.04/$(ARCH) /
deb https://nvidia.github.io/nvidia-container-runtime/stable/ubuntu18.04/$(ARCH) /
#deb https://nvidia.github.io/nvidia-container-runtime/experimental/ubuntu18.04/$(ARCH) /
deb https://nvidia.github.io/nvidia-docker/ubuntu18.04/$(ARCH) /

安装nvidia-docker2包及其依赖

sudo apt-get update

控制台输出:

命中:1 https://dl.google.com/linux/chrome/deb stable InRelease                                                                                                                                                    
命中:2 http://security.ubuntu.com/ubuntu bionic-security InRelease                                                                                                                                                
命中:3 http://cn.archive.ubuntu.com/ubuntu bionic InRelease                                                                                                                                                       
命中:4 http://cn.archive.ubuntu.com/ubuntu bionic-updates InRelease                                                                                                                                      
获取:5 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64  InRelease [1,484 B]                                                
命中:6 https://linux.teamviewer.com/deb stable InRelease                                                                                       
获取:7 https://nvidia.github.io/nvidia-container-runtime/stable/ubuntu18.04/amd64  InRelease [1,481 B]                                         
命中:8 http://cn.archive.ubuntu.com/ubuntu bionic-backports InRelease                                                                   
获取:9 https://nvidia.github.io/nvidia-docker/ubuntu18.04/amd64  InRelease [1,474 B]                 
获取:10 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64  Packages [18.7 kB]                  
获取:11 https://nvidia.github.io/nvidia-container-runtime/stable/ubuntu18.04/amd64  Packages [7,416 B]
获取:12 https://nvidia.github.io/nvidia-docker/ubuntu18.04/amd64  Packages [4,488 B]
命中:13 https://download.docker.com/linux/ubuntu bionic InRelease
已下载 35.1 kB,耗时 3(12.0 kB/s)
正在读取软件包列表... 完成

接着执行安装nvidia-docker2:

sudo apt-get install -y nvidia-docker2

控制台输出如下:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包是自动安装的并且现在不需要了:
  linux-hwe-5.4-headers-5.4.0-100 linux-hwe-5.4-headers-5.4.0-104 linux-hwe-5.4-headers-5.4.0-105 linux-hwe-5.4-headers-5.4.0-107 linux-hwe-5.4-headers-5.4.0-109 linux-hwe-5.4-headers-5.4.0-42
  linux-hwe-5.4-headers-5.4.0-89 linux-hwe-5.4-headers-5.4.0-90 linux-hwe-5.4-headers-5.4.0-91 linux-hwe-5.4-headers-5.4.0-92 linux-hwe-5.4-headers-5.4.0-94 linux-hwe-5.4-headers-5.4.0-96
  linux-hwe-5.4-headers-5.4.0-99
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
  libnvidia-container-tools libnvidia-container1 nvidia-container-toolkit
下列【新】软件包将被安装:
  libnvidia-container-tools libnvidia-container1 nvidia-container-toolkit nvidia-docker2
升级了 0 个软件包,新安装了 4 个软件包,要卸载 0 个软件包,有 38 个软件包未被升级。
需要下载 1,934 kB 的归档。
解压缩后会消耗 7,730 kB 的额外空间。
获取:1 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64  libnvidia-container1 1.9.0-1 [926 kB]
获取:2 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64  libnvidia-container-tools 1.9.0-1 [23.9 kB]                                                                                         
获取:3 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64  nvidia-container-toolkit 1.9.0-1 [978 kB]                                                                                           
获取:4 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64  nvidia-docker2 2.10.0-1 [5,532 B]                                                                                                   
已下载 1,934 kB,耗时 58(33.3 kB/s)                                                                                                                                                                            
正在选中未选择的软件包 libnvidia-container1:amd64。
(正在读取数据库 ... 系统当前共安装有 462588 个文件和目录。)
正准备解包 .../libnvidia-container1_1.9.0-1_amd64.deb  ...
正在解包 libnvidia-container1:amd64 (1.9.0-1) ...
正在选中未选择的软件包 libnvidia-container-tools。
正准备解包 .../libnvidia-container-tools_1.9.0-1_amd64.deb  ...
正在解包 libnvidia-container-tools (1.9.0-1) ...
正在选中未选择的软件包 nvidia-container-toolkit。
正准备解包 .../nvidia-container-toolkit_1.9.0-1_amd64.deb  ...
正在解包 nvidia-container-toolkit (1.9.0-1) ...
正在选中未选择的软件包 nvidia-docker2。
正准备解包 .../nvidia-docker2_2.10.0-1_all.deb  ...
正在解包 nvidia-docker2 (2.10.0-1) ...
正在设置 libnvidia-container1:amd64 (1.9.0-1) ...
正在设置 libnvidia-container-tools (1.9.0-1) ...
正在设置 nvidia-container-toolkit (1.9.0-1) ...
正在设置 nvidia-docker2 (2.10.0-1) ...
正在处理用于 libc-bin (2.27-3ubuntu1.5) 的触发器 ...
/sbin/ldconfig.real: /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8 is not a symbolic link

/sbin/ldconfig.real: /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_ops_train.so.8 is not a symbolic link

/sbin/ldconfig.real: /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8 is not a symbolic link

/sbin/ldconfig.real: /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_adv_train.so.8 is not a symbolic link

/sbin/ldconfig.real: /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8 is not a symbolic link

/sbin/ldconfig.real: /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8 is not a symbolic link

安装完成

接着安装镜像

sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

控制台输出结果:

在这里插入图片描述
查看已下载的镜像

sudo docker images -a

控制台输出如下:
在这里插入图片描述查看当前运行的容器:

 sudo docker ps

控制台输出如下:
在这里插入图片描述
貌似没有运行的容器,毕竟我是刚装的docker吗。

拉一个镜像下来,比如ubuntu

sudo docker pull ubuntu

在这里插入图片描述


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jndingxin/article/details/125058470

智能推荐

通过JDBC进行简单的增删改查(以MySQL为例)-程序员宅基地

文章浏览阅读2.3k次。通过JDBC进行简单的增删改查(以MySQL为例)前言:什么是JDBC  维基百科的简介:Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。它JDBC是面向关系型数据库的。

TensorFlow gfile文件操作详解-程序员宅基地

文章浏览阅读302次。转:https://blog.csdn.net/u014182497/article/details/80681331一、gfile模块是什么gfile模块定义在tensorflow/python/platform/gfile.py,但其源代码实现主要位于tensorflow/tensorflow/python/lib/io/file_io.py,那么gfile模块主要功...

A Simple C++ Plugin System -- Interface Between Plugin and Main Application_c++ plugin systems-程序员宅基地

文章浏览阅读565次。Abstract前人已有A Simple C++ Plugin System Summary,本文将处理,如何实现插件与主程序之间的接口Introduction支持任意的命令:插件的基本类往往只提供少数接口,因此有必要将一个接口转换为多个接口。下面的字符串接口即实现了这一功能。 数据共享,包括以下 1. 主程序中访问,修改插件参数,参见下面的指针类接口。 2. 插件访问,修改主程序参数,需要在_c++ plugin systems

arduino编译器Linux,如何在Linux上安装Arduino IDE 1.8.12-程序员宅基地

文章浏览阅读707次。如何在Linux上安装Arduino IDE 1.8.12Arduino是一个广泛使用的开源电子原型平台,用于创建使用传感器和执行器与环境互动的设备。它由一个可编程的硬件板和一个用于将程序编写和上传到板上的软件(集成开发环境(IDE))组成。在开始使用Arduino构建项目之前,您需要设置IDE对板子进行编程。 Arduino(IDE)是一个免费的开源和跨平台桌面应用程序,可让您编写代码并将其上传..._arduino ide kali上自动集成吗

linux下修改profile文件,linux 下修改etc/profile文件-程序员宅基地

文章浏览阅读274次。const和readonly区别内容来源<>(转载) 标题:什么才是不变:const和readonly 内容: const:用 const 修饰符声明的成员叫常量,是在编译期初始化并嵌 ...【数据结构】红黑树 C语言代码连看带写花了三天,中途被指针引用搞得晕晕乎乎的. 插入和删除的调整过程没有看原理,只看了方法,直接照着写的. 看了两份资料,一份是算法导论第12-13章, 另一份是网..._linux把profile改名为pro

获取后台用户 token 的方法-程序员宅基地

文章浏览阅读2.3k次。一,通过电子邮箱获取用户tokenprotected function getCustomerToken($emailId){ /*** @var \Magento\Customer\Model\Customer $customer */*/$customer->loadByEmail($emailId);if($customer->getId()){..._如何查看后端token

随便推点

android afw模式,[HUAWEI-TITANC328]手机加密功能开启后,工作区中添加超级备份手机不断重启的分析报告...-程序员宅基地

文章浏览阅读319次。工作区中添加超级备份手机不断重启的分析报告【华为反馈】 【TIT-AL00C328B120_AFW_必现】创建工作空间后升级系统,升级失败,手机循环重启。通过分析log发现,实际上这个问题与OTA无关,而与工作区应用发出的notification有关。经过沟通和自测,复现了此问题。步骤如下:1、插入sim卡【sim卡中有2个联系人,手机中无】创建afw工作区;【测试前手机已恢复出厂设置】2、adb..._afwlfv

C# Cookbook (Executing Stored Procedures)-程序员宅基地

文章浏览阅读700次。Executing Stored Proceduresusing System;using System.Data;using System.Data.SqlClient;class StoredProcDemo{static void Main(){StoredProcDemo spd = new StoredProcDemo();// run a simple stored procedur..._c# cookbook

关于『进击的Markdown』:第二弹_markdown 日期-程序员宅基地

文章浏览阅读2k次。关于『进击的Markdown』:第二弹_markdown 日期

OSI参考模型和OSI协议的区别_协议和模型有什么区别-程序员宅基地

文章浏览阅读657次。OSI协议是为了让异构的计算机之间能够相互通信的,由ISO和ITU-T推进其标准化的一种网络体系架构。OSI(参考模型)讲通信功能划分为7个分层,称作OSI参考模型。OSI协议以OSI参考模型为基础界定了每个阶层的协议和每个阶层之间接口相关的标准。遵循OSI协议的产品叫做OSI产品,而它们所遵循的通信则被称为OSI通信。..._协议和模型有什么区别

Powershell无法使用conda activate的问题_powershell conda activate-程序员宅基地

文章浏览阅读3.4k次,点赞5次,收藏9次。主要引起的原因是Powershell使用Conda init失败问题主要出现在中文系统中。特别与onedrive开启了【文档同步】有关可以看到,最后两行生成了配置文件(用以启动conda),并在onedrive上,但是!onedrive中路径有【文档】无法解析,有unicode乱码的存在。以下是关于powershell配置文件的介绍。因此,问题就很简单了,主要是powershell在读取配置文件的时候,无法解析unicode路径(乱码导致)。我们可以通过在powershell中test-_powershell conda activate

推荐文章

热门文章

相关标签