ubuntu20.04中docker容器及容器中使用gpu的安装和配置_ZM_L的博客-程序员信息网

技术标签: 配置经验  

一、安装docker-19.03

1.查看ubuntu内核

uname -r

2.安装docker

sudo apt-get install docker.io

3.查看版本

docker version 或 docker -v

4.启动

sudo systemctl unmask docker.service
sudo systemctl unmask docker.socket
sudo systemctl start docker.service

5.查看状态

sudo systemctl status docker

二、修改docker源:

sudo gedit /etc/docker/daemon.json

添加以下内容:(使用阿里源)

{
    
    "registry-mirrors":[
         "https://emasu4pd.mirror.aliyuncs.com",
         "http://hub-mirror.c.163.com"
    ],
    "runtimes": {
    
        "nvidia": {
    
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

三 、docker中使用gpu:

方法一: 使用nvidia-container-runtime:

1.添加库: Link

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

新建script.sh,写入上述内容,执行sh script.sh。

2. 安装nvidia-container-runtime:

sudo apt-get install nvidia-container-runtime
systemctl restart docker #重启docker

3.测试验证:(启动命令中添加参数:–gpus all 或 --gpus "device=1"指定):

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

方法二: 使用nvidia-docker2:

1.添加库: Link

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

新建script.sh,写入上述内容,执行sh script.sh。

2. 安装nvidia-container-runtime及查看:

sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd

3.测试验证:(启动命令中添加参数:–runtime=nvidia):

docker run --runtime=nvidia --rm nvidia/cuda:11.0-base nvidia-smi

测试nvidia-docker

以上便完成docker和nvidia-docker的安装。

四、修改镜像root密码:

当需要更新镜像或安装文件时,需要在root下执行。

#运行容器
docker run --rm --gpus all -p 8000:3000 -it --ipc=host  <REPOSITORY:TAG> /bin/bash
#在容器运行的基础上,打开另一个终端窗口,执行一下命令
docker exec -it --user root <CONTAINER ID> /bin/bash
#修改root密码:
passwd root
#在镜像中完成操作后,打开另一个终端,commit镜像
docker commit -m "change passwd root" -a "Amelia" <CONTAINER ID> <REPOSITORY:TAG> #<REPOSITORY:TAG>可自己指定

五、将本地环境打包成docker镜像:

过程参考

文件组成:

Dockerfile
library.txt

1. 将项目的依赖库进行导出:

#激活环境
source activate torch1.7
#执行
pip freeze > library.txt

2.创建Dockerfile,编写内容如下:

#基础镜像
FROM python:3.8.5 
#创建用户目录
RUN useradd -m workspace
#处理指定目录以及其子目录下的所有文件
RUN chown -R workspace /home/workspace
#工作目录
USER workspace
WORKDIR /home/workspace
#将库文件拷贝到工作路径
#COPY library.txt /home/workspace/library.txt
ADD library.txt /home/workspace
#安装指定的库
RUN pip install -r library.txt

3.创建镜像:

docker build -t test:v1 .

4.测试启动容器:

docker run --rm -p 8000:3000 -it --ipc=host test:v1 /bin/bash

六、docker常用命令:

#启动
systemctl start docker
#重启docker服务
sudo service docker restart
#关闭
sudo systemctl stop docker
#卸载
sudo apt-get remove docker docker-engine docker-ce docker.io
命令 操作
镜像列表查看 docker images
删除镜像 docker rmi IMAGE ID
容器列表查看 docker ps -a
删除容器 docker rm -f CONTAINER ID
搜索镜像 docker search 镜像 //也可以从官网搜索:https://hub.docker.com/
dockerHub镜像库中拉取镜像 docker pull 镜像
拷贝本地文件到容器中去 docker cp 本地目录 CONTAINER ID:容器目录
在基础容器中做完修改后保存镜像的命令 docker commit -m “说明” -a “作者” CONTAINER ID 镜像名字:标签 //自己指定(镜像名字:标签)[[REPOSITORY]:[TAG]]只能用小写字母
查看镜像的详细信息 docker inspect IMAGE ID
镜像保存 docker save -o path/name.tar IMAGE //容器列表中的IMAGE
镜像加载 docker load -i path/name.tar
启动已存在的容器 docker attach CONTAINER ID
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liuzhuomei0911/article/details/115176455

智能推荐

Golang基础之Map基础习题——李文周老师_Villero的博客-程序员信息网

代码如下:package mainimport ( "fmt" "strings")func main() { s := "how do you do" fmt.Println(WordCount(s))}func WordCount(s string) map[string]int { //return map[string]int{"x": 1} m := ...

web自动化测试第21步:UI自动化框架结构以及思路_许西城的博客-程序员信息网

在学会使用unittest后,实际上UI自动化的基础骨架已经搭建起来了,剩下的就是利于这套框架,增添一些我们需要的功能,目前看来,我们已经可以使用此框架来批量运行用例,欠缺的是整体的思路以及一些其他功能细节,比如日志记录、封装webdriver、读取数据库等功能的实现;在网上看了很多别人的框架,以及加上自己的理解后,我在这里分享一下我最终所整理的这套框架。一、框架结构这里是我的一个框架...

量化交易-MACD策略学习_东南有大树的博客-程序员信息网_macd量化

MACD的基本概念,可以参考 https://www.joinquant.com/post/7095?f=18newyearjx ,感谢 Quant中找米吃的阿鼠 和 聚宽小秘书 Thanks♪(・ω・)ノ我认为MACD不适合采用轮动策略,经过回测,我将策略改成以下模式:

Eclipse- Dynamic Web Module 3.0 requires Java 1.6 错误_Java海洋-程序员信息网

错误信息如图:发现解决这个问题的有好几个地方,这个要具体看你项目的情况,这边整理了一下:一、在pom文件中定义maven-compile-plugin的版本跟source、target的版本,也就是插入下面的版本,我项目中用的是dynamic web3.0 所以必须用到java1.7以上的版本具体版本的你们可以根据自己项目定义。   build>     plu

kudu性能调优_yunhao.wei的博客-程序员信息网_kudu读写性能

1、Kudu Tablet Server Maintenance Threads 解释:Kudu后台对数据进行维护操作,如写入数据时的并发线程数,一般设置为每台机器磁盘数据目录的数量*3参数:maintenance_manager_num_threads2、Kudu Tablet Server Block Cache Capacity Tablet 解释:分配给Kudu Tab...

forEach循环数组,删除满足条件的元素,遇到的坑怎么解决?_Mrswater的博客-程序员信息网_foreach 满足条件删除

1,forEach如何删除数组元素呢forEach因为index索引无法重置,对于删除数组项真的很困难,那如果非常想用forEach去做这个功能行不行,当然行,只是我们得让数组反过来遍历:arr.slice().reverse().forEach(function (item, index, arr1) { if (item === 1) { arr.splice...

随便推点

面试时被问到职业规划怎么回答?_zihaunshuo的博客-程序员信息网_java面试问到职业规划

找工作面试的人都知道会遇到各种各样的问题,而被问到“你的职业规划是什么”这种问题的情况也不在少数。尤其公司要考虑你能不能长久坚持时更会这样问,因为这样会让他们心理有个底,毕竟他们对岗位要做的事很了解,根据你的职业规划能看出是否匹配。职业规划,说难也难,说不难也不难,主要看你对自己是否能足够认清。一般做职业规划,是需要根据你过往的经验,找到自己的优势;然后,根据优势,去寻找匹配的行业及岗位;最后,根据这些行业和岗位,你可以看到一条向上发展的职业路径。面试时被问到职业规划怎么回答?这里其实就有难点了,其

Beautiful Soup 中文文档_huazi_715的博客-程序员信息网

原文 by Leonard Richardson ([email protected]) 翻译 by Richie Yan ([email protected]) ###如果有些翻译的不准确或者难以理解,直接看例子吧。### 英文原文点这里Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree)。 它...

网页版-抽签程序源码_HeiSeHuoEr的博客-程序员信息网_抽签源码

以下是一个抽签小程序,用于项目答辩抽签:HTML> HEAD>meta charset="utf-8"> style type="text/css">body{ font-size:100px; text-align:center;}input{ width:350px; height:140px; font-size:80px;}

Gartner 2021年十大数据和分析趋势_公众号:肉眼品世界的博客-程序员信息网

(文:Gartner研究总监 孙鑫 )在新冠疫情肆虐时,使用传统分析技术并因此而严重依赖大量历史数据的企业意识到了一件重要的事情:许多此类模式已不再有用。这场疫情几乎改变了一切,令许多数据...

5-五、安装tensorflow_向来萧瑟也无畏-程序员信息网

(一)确定tensorflow版本号安装好Anaconda后就可以安装Tensorflow了安装tensorflow之前需要确认版本号,tensorflow版本和CUDA以及cuDNN都是有关的,要注意,可以参考以下链接,自己对照表格选择版本。(最终还是要自己实践!!表哥格不一定对)https://blog.csdn.net/qq_27825451/article/details/890829...

Python等级考试一道关于血压的综合题解析_James的博客-程序员信息网_python测血压

##Python等级考试一道关于血压的综合题解析Python等级考试有道关于血压的综合题,某次模拟考试遇到过,有一定难度,当时没做出来,现在得空,就总结分析一下。题目如下:老王的女儿给老王测血压,记录了一段时间的血压测量值,在文件 xueyajilu.txt 中,每行是一条记录,包含:测量时间,左臂高压,左臂低压,右臂高压,右臂低压,心率;每个字段用英文逗号隔开,示例如下:‪‬‪‬‪‬‪‬‪...

推荐文章

热门文章

相关标签