Docker 安装 和 GPU 支持

news2024/11/25 15:41:44

一、Docker安装过程(ubuntu18.04环境)

清华镜像 docker 安装:docker-ce | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

1、由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:

sudo apt-get remove docker docker-engine docker-ce docker.io

2、更新ubuntu的apt源索引

sudo apt-get update

3、配置安装包允许apt通过HTTPS使用仓库

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

4、添加Docker官方GPG key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

5、设置Docker稳定版仓库

sudo add-apt-repository \
  "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"

6、再次更新apt源索引

sudo apt-get update

7、安装最新版Docker CE(社区版)

sudo apt-get install docker-ce

8、如果要安装指定版本的docker按如下操作(不需要也可以跳过这步操作)

apt-cache madison docker-ce    # 列出可用的docker-ce版本
sudo apt-get install docker-ce=18.06.1~ce~3-0~ubuntu    #安装指定的docker版本

9、拉取hello-world镜像测试docker容器

sudo docker run hello-world

这一步如果报错: (Unable to find image ‘hello-world:latest’ locally)

出现如下信息即表示docker安装成功并且运行正常,请参考这一篇文章

最后, 出现如下信息即表示docker安装成功并且运行正常

 10、启动 Docker 服务并将其设置为开机启动:

sudo systemctl start docker    # 启动
sudo systemctl stop docker     # 停止
sudo systemctl restart docker  # 重启
sudo systemctl enable docker   # 设置开机启动

二、daoker 配置root 权限(可选)

令docker无需root权限,每次都要sudo

Docker daemon(Docker守护进程,可以理解是整个Docker的后台)是绑定了Unix Socket(Unix套接字,一种通讯方式),而不是TCP端口来进行通讯。而对于Unix Socket而言,它默认是属于root用户的,其他用户要使用的话,必须在每句命令前加sudo,这样的话Docker daemon就一直是运行在root用户上了。
这样比较麻烦,我们并不想每句命令都加sudo,再一遍遍地输入密码,那应该怎么办呢?
根据前文,Unix Socket默认归属于root用户,那么我们调整用户就可以了。
换句话说,我们新建一个Unix用户组,名叫docker(当然你可以叫它别的名字),然后在这个用户组中,添加一个用户,这样使得daemon启动的时候,使用的Unix Socket是属于这个用户的,而不是root,那么就不需要sudo了。

注:这样的做法可能会引起安全问题,具体可参考Docker Daemon Attack Surface这篇文档。

避免每次输入命令时都要加上sudo

方法1(这个测试过):

建立docker用户组,并添加用户:

sudo groupadd docker
sudo usermod -aG docker $USER

注销你的账户,重新登陆,使得用户组设置变动生效:

若你使用的是虚拟机,那么你最好重启虚拟机使得设置改动生效
若你是用的桌面操作系统比如Linux某个发行版;MacOS;Windows等,完全注销你的账户,然后再重新登陆使得设置改动生效。
如果你用Linux,你也可以用这样一条指令,来使得改动生效:

newgrp docker 

方法2:配置用户组(这个没有测试过):

sudo usermod -a -G docker $USER     

检验一下,是否无需sudo:

docker run hello-world

这条指令就会下载一个测试docker用例,并且会提示各种测试的结果,如果提示结果正确,那么就配置正常!

三、在Docker中使用Nvidia GPU

docker发布19.03版本后,在docker中使用GPU变得方便。docker添加了使用gpu的option。使得只需要一个option即可在容器中使用GPU,跳过了复杂的配置大大降低了使用难度。

docker19.03之后,不再需要安装nvidia-docker了。只安装NVIDIA-CONTAINER-RUNTIME就可以使用了,并且支持docker-compose。

1、安装NVIDIA-CONTAINER-RUNTIME

1、查看支持的操作系统和版本,并根据对应选项,添加源, ubuntu 时 基于 Debian 的系统。

官方说明配置软件包仓库地址:Migration Notice | nvidia-container-runtime

2、然后执行下面的命令:

apt-get install nvidia-container-runtime

3、check nvidia-container-runtime是否安装成功

which nvidia-container-runtime-hook

然后重启 docker daemon

2、向容器暴露GPU

运行容器时,添加--gpu参数启用gpu支持

在启动容器时使用--gpus 使主机上的GPU可访问,并且可以配置使用多少块GPU

# 使用所有GPU
docker run -it --rm --gpus all ubuntu nvidia-smi

# 使用两个GPU
docker run --gpus 2 ubuntu  nvidia-smi

# 使用指定 GPU
docker run --gpus '"device=1,2"' ubuntu  nvidia-smi

将所有GPU暴露给容器,并调用“nvidia-smi"返回的结果,则表示doker 可以调用 gpu了:

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

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

相关文章

Java 设计模式——原型模式

目录 1.概述2.结构3.实现3.1.浅拷贝3.2.深拷贝3.2.1.通过对象序列化实现深拷贝(推荐)3.2.2.重写 clone() 方法来实现深拷贝 4.优缺点5.使用场景 1.概述 (1)原型模式 (Prototype Pattern) 是一种创建型设计模式,是通过…

【2023裸辞失业后之初学RocketMQ】

目录 RocketMQ概述MQ概述常见的MQ产品常见的协议 Rocket的安装和启动基本概念系统架构安装RocketMQ和控制台 RocketMQ概述 MQ概述 Message Queue:是提供消息队列服务的中间件,提供消息生产,存储,消费的全过程。 作用&#xff1a…

刘铁猛C#语言教程——表达式详解1

表达式的定义 对以上文档的翻译: 对以上文档的代码解释:表达式是为了实现具体的算法逻辑并得到一个具体的值,而表达式的返回值可以是一个单值,也可以是实例,方法,或者命名空间;例如:…

微服务入门---SpringCloud(一)

微服务入门---SpringCloud(一) 1.认识微服务1.0.学习目标1.1.单体架构1.2.分布式架构1.3.微服务1.4.SpringCloud1.5.总结 2.服务拆分和远程调用2.1.服务拆分原则2.2.服务拆分示例2.2.1.导入Sql语句2.2.2.导入demo工程 2.3.实现远程调用案例2.3.1.案例需求…

当今网络的基本情况

1 网络表示方法和网络拓扑 1.1 网络表示方法 网络架构师和管理员必须能够展示他们的网络将是什么样子。他们需要能够轻松地看到哪些组件连接到其他组件,它们将位于何处,以及它们将如何连接。网络图通常使用图标(如图中所示)来表…

基于Citespace、vosviewer、R语言的文献计量学可视化分析技术及全流程文献可视化SCI论文高效写作方法

文献计量学是指用数学和统计学的方法,定量地分析一切知识载体的交叉科学。它是集数学、统计学、文献学为一体,注重量化的综合性知识体系。特别是,信息可视化技术手段和方法的运用,可直观的展示主题的研究发展历程、研究现状、研究…

数据结构与算法-排序算法

数据结构与算法之排序算法 1 使用递归的方式求最大值2 时间复杂度3 选择排序和冒泡排序的时间复杂度分析4 插入排序时间复杂度分析 (O(N^2))5 二分法的详解与扩展6 对数器7 归并排序8 归并排序的应用9 逆序对问题10 归并排序非递归方式11 快速排序12 堆排序13 桶排序 1 使用递归…

并行计算-OPENMP(windows)

并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来协同求解同一问题,即将被求解的问题分解成若干个部分,各…

深度学习(一)

目录 一、特征工程的作用 二、深度学习的应用 三、得分函数 四、损失函数 五、前向传播 六、反向传播 一、特征工程的作用 数据特征决定了模型的上限预处理和特征提取是最核心的算法与参数选择决定了如何逼近这个上限 二、深度学习的应用 无人驾驶人脸识别分辨率重构 深…

国产龙芯2k1000开发板运行SylixOS嵌入式实时系统--迅为电子

龙芯生态体系越来越完善,继RK3568开发板成功搭载SylixOS国产实时操作系统后,迅为的国产龙芯2K1000开发平台也可以流畅运行SylixOS国产实时操作系统了。 SylixOS 采用抢占式、多任务、硬实时的方式来设计整个操作系统。已广泛适用于电力、工业自动化、轨道…

为什么要配置环境变量(深析)

为什么要配置环境变量(深析) 前言:大家学习java首先听到的就是jdk,配置环境变量,当时我听到这个也一脸雾水,这是个什么东西,当时就稀里糊涂跟着老师一步步下载安装,弄好了也不知道是…

安全基础 --- html基础标签 + DNS工作原理

html基础标签 &#xff08;1&#xff09;id id属性是元素在网页内的唯一标识符。 比如&#xff0c;网页可能包含多个<p>标签&#xff0c;id属性可以指定每个<p>标签的唯一标识符。 <p id"p1"></p> <p id"p2"></p>…

UE4/5C++多线程插件制作(十四、MTPAbandonable)

MTPAbandonable 在头文件中创建新的文件夹,MTPAbandonable,里面是MTPAbandonable.h,cpp也一样如此: h实现 构造函数接受一个FSimpleDelegate类型的参数InThreadDelegate,用于指定任务在后台线程中执行时要执行的操作。 DoWork()函数定义了任务的具体执行逻辑,需要根据…

NLog同时输出到文件、控制台、RichTextBox

效果 项目 VS2010.net4.0NLogNLog.Windows.Forms 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using NLog;namespac…

【Docker 网络】

文章目录 一、Docker 网络1、Docker 网络实现原理2、查看容器的输出和日志信息3、Docker 的网络模式4、网络模式详解1&#xff0e;host模式2&#xff0e;container模式3&#xff0e;none模式4&#xff0e;bridge模式5&#xff0e;自定义网络1、创建自定义网络 二、资源控制1&am…

初识TDMQ

目录 一&#xff1a;需求背景二&#xff1a;相关文档三&#xff1a;验证TDMQ广播消息 一&#xff1a;需求背景 目前公司需要将决策引擎处理的结果&#xff0c; 一部分数据交给下游分析/入黑/通知等功能。因此就需要决策引擎生产结果让多方下游去消费。 而我需要实现下游的一部…

数据类型的分类

数据类型的分类 java中的 变量 按照数据类型来分类&#xff1a; 基本数据类型&#xff08;8种&#xff09;&#xff08;primitive type&#xff09;&#xff1a; 整型&#xff1a;byte、short、int、long、浮点型&#xff1a;float、double字符型&#xff1a;char布尔型&#x…

/var/empty/sshd must be owned by root and not group or world-writable

/var/empty/sshd must be owned by root and not group or world-writable 这个是权限的问题 可采取以下两步解决 chown -R root.root /var/empty/sshd chmod 744 /var/empty/sshd service sshd restart

80v转5v芯片-电动车/汽车降压芯片方案

Q: 什么是80v转5v芯片&#xff1f;什么它在电动车和汽车中有应用需求&#xff1f; A: 80v转5v芯片是一种电源转换芯片&#xff0c;可以将输入电压范围为9v至100v的直流电源转换为输出电压为5v&#xff0c;并且可以进行可调。这种芯片在电动车和汽车领域有广泛的应用需求。电动…

Python+pytest+requests 自动化测试框架

目录 前言&#xff1a; 环境准备 简单 Demo yml 文件读取功能 数据层 业务层 测试用例层 前言&#xff1a; Python 是一种广泛使用的编程语言&#xff0c;它可以用于开发各种软件和应用程序。pytest 是一个广泛使用的自动化测试框架&#xff0c;它可以帮助我们更轻松地…