Docker 安装 和 GPU 支持

一、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.mzph.cn/news/5428.shtml

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

相关文章

MySQL(一)基本架构、SQL语句操作、试图

MySQL系列文章 MySQL(一)基本架构、SQL语句操作、试图 MySQL(二)索引原理以及优化 MySQL(三)SQL优化、Buffer pool、Change buffer MySQL(四)事务原理及分析 MySQL(五&a…

异步任务——CompletabelFuture

本专栏学习内容又是来自尚硅谷周阳老师的视频 有兴趣的小伙伴可以点击视频地址观看 在学习CompletableFuture之前,必须要先了解一下Future Future 概念 Future接口(FutureTask实现类)定义了操作异步任务执行的一些方法,如获取异…

前端学习——Vue (Day2)

指令补充 指令修饰符 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevi…

每月进度总结 7月1日~7月22日

一个月已经过了三分之二了&#xff0c;感觉这个月是在学校学的很多。也是最充实的三个星期。其中也有发呆&#xff0c;也有过懊悔&#xff0c;今天状态为什么这么差&#xff0c;就学了这一点。但是还有学到知识的喜悦。总之是认识到了自己的很多不足&#xff0c;也找到了相对正…

【笔试强训选择题】Day28.习题(错题)解析

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训选择题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&#xff…

基础 | 日志 | 体系介绍

INDEX 总览图上图的说明 总览图 上图的说明 日志体系的结构大约可以概括为 日志门面日志绑定层日志实现日志桥接层 slf4j 是 日志门面&#xff0c;所谓日志门面可以理解为日志总接口 slf4j-log4j、log4j-slf4j-impl 是 日志绑定层&#xff0c;日志绑定层的作用是将 日志门面…

C#using关键字的使用方法

这篇日志记录下C#中using关键字的使用方法。 Using的使用大致分别以下三种&#xff1a; 1&#xff1a;using指令&#xff08;命名空间&#xff09; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; …

【stable diffusion】保姆级入门课程03-Stable diffusion(SD)图生图-涂鸦(绘图)的用法

目录 0.本章素材 1.涂鸦有什么用 2.涂鸦的使用场景是什么 3.操作面板 4.提示词与涂鸦 5.涂鸦与重绘幅度 6.涂鸦的其他用法(自由创作) 7.课后训练 0.本章素材 Realistic Vision V3.0模型(真实系模型)百度网盘链接&#xff1a;https://pan.baidu.com/s/1HkSKW2t4L6wMg…

HJ106 字符逆序

描述 将一个字符串str的内容颠倒过来&#xff0c;并输出。 数据范围&#xff1a;1≤len(str)≤10000 1≤len(str)≤10000 输入描述&#xff1a; 输入一个字符串&#xff0c;可以有空格 输出描述&#xff1a; 输出逆序的字符串 示例1 输入&#xff1a; I am a student…

python redis 连接池 和 消息 订阅发布

python redis 连接池 和 消息 订阅发布 redis 发布订阅&#xff08;PubSub&#xff09;&#xff0c;深入解读 https://blog.csdn.net/ldw201510803006/article/details/126093445 def connectredis(self):try:#redis的连接池#rs StrictRedis(hostself.host, port6379, db2 )r…

Day52: 84.柱状图中最大的矩形

84.柱状图中最大的矩形 84. 柱状图中最大的矩形 - 力扣&#xff08;LeetCode&#xff09; 思路 本题是要找每个柱子左右两边第一个小于该柱子的柱子&#xff0c;所以从栈头&#xff08;元素从栈头弹出&#xff09;到栈底的顺序是从大到小的顺序。例&#xff1a; 三种情况&a…

uniapp:拖拽容器movable-view,层级问题解决

代码 <template><view class"index"><view click"toast">页面内容事件触发</view><movable-area class"movableArea"><movable-view :x"x" :y"y" direction"all" change"m…

Kubernetes 使用 helm 部署 NFS Provisioner

文章目录 1. 介绍2. 预备条件3. 部署 nfs4. 部署 NFS subdir external provisioner4.1 集群配置 containerd 代理4.2 配置代理堡垒机通过 kubeconfig 部署 部署 MinIO添加仓库修改可配置项 访问nodepotingress 1. 介绍 NFS subdir external provisioner 使用现有且已配置的NFS…

百度智能汽车负责人储瑞松离职,智驾重心转向ANP3

作者 | 王博 HiEV从多个信息源获悉&#xff0c;百度集团副总裁、百度智能汽车事业部总经理储瑞松将从百度离职。一位知情人士透露&#xff0c;储瑞松「即将启程&#xff0c;返回美国」。 继百度Apollo技术骨干郭阳离职后&#xff0c;储瑞松的变动&#xff0c;更加直白地反映出百…

【贪心算法part05】| 435.无重叠区间、763.划分字母区间、56.合并区间

目录 &#x1f388;LeetCode435. 无重叠区间 &#x1f388;LeetCode763.划分字母区间 &#x1f388;LeetCode 56.合并区间 &#x1f388;LeetCode435. 无重叠区间 链接&#xff1a;435.无重叠区间 给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, …

Hive内部表和外部表的区别

未被 external修饰的是内部表 被 external修饰的为外部表。 区别&#xff1a; 内部表数据由 Hive自身管理&#xff1b; 外部表数据由 HDFS管理&#xff1b; 内部表数据存储的位置是 hive.metastore.warehouse.dir&#xff08;默认&#xff1a;/user/hive/warehouse&#xf…

数据仓库设计理论

数据仓库设计理论 一、数据仓库基本概念 1.1、数据仓库介绍 数据仓库是一个用于集成、存储和分析大量结构化和非结构化数据的中心化数据存储系统。它旨在支持企业的决策制定和业务分析活动。 1.2、基本特征 主题导向&#xff1a;数据仓库围绕特定的主题或业务领域进行建模…

使用Nacos将单体服务注册成微服务的步骤以及相关问题解决

目录 1.改造单体服务的配置文件。 2.添加Nacosw相关的pom依赖 3.在nacos的配置列表中创建配置列表 4.相关问题的解决 1.改造单体服务的配置文件。 &#x1f516;创建一个bootstrap.yml的配置文件该文件通常放置在src/main/resources目录中&#xff0c;并且优先于applicati…

为Qemu aarch32开发板添加sd卡

Qemu: 2.8.0 开发板&#xff1a; vexpress 1、制作sd卡镜像 dd if/dev/zero offs_vexpress_1G.img bs1M count 2、分区 sudo losetup /dev/loop0 fs_vexpress_1G.imgsudo fdisk /dev/loop0 注&#xff1a;可以使用 losetup -a 查看当前loop设备的占用情况 下面是分的两个…

Spring:xml 配置

Bean 配置xml 配置反射模式工厂方法模式Factory Bean 模式配置 在 Spring 中,配置 bean 实例一般使用 xml 配置方式或注解(Annontation) 方式进行配置。 xml 配置 在 xml 配置中分为三种方式,分别为反射模式、工厂方法模式和 Factory Bean 模式。 反射模式:指通过指定 …