nvidia-docker使用手册

介绍

nvidia-docker 就是在docker上面多加了几层包装,如果你要调用cuda环境,就必须要用“nvidia-docker  XXX”的指令形式进行操作,当然现在有的版本用“docker  XXX”也可以实现对应的功能。docker可以理解为一个小的虚拟机,但是比虚拟机轻量,大部分人用就是拿来做环境隔离,这样不会影响到别人的环境,及时崩了还可以再开一个容器。

下面说一下几个概念:

1.镜像,镜像你可以理解为一个躺在磁盘里的程序,他是代码的集合,你动或不动他,他都躺在那里。

2.容器,容器可以理解为跑起来的进程。容器和镜像的关系就如同磁盘的程序和运行的进程。一个进程可以跑出很多个容器。

对应的,你修改好的容器,也可以保存成镜像。

使用流程

1.首先如果刚装好,是没有任何镜像的,那么你可以去docker hub 上下载环境适合的镜像。

docker pull [IMAGE_NAME]:[TAG]
如:
docker pull kaixhin/cuda-caffe:8.0

2.如果镜像已经下好了,那么就是启动对应的容器即可。

流程包含2.查看所有镜像,3.运行镜像。以及后续的对容器的操作,如下所示。

常用指令

1.启动/重启/暂停 docker服务, 一般除非更改docker环境才用得上

sudo service docker start/restart/stop   
#只有开启docker服务才可以正常使用docker,服务相当于总进程

2.查看所有镜像

docker images 
#显示所有镜像

3.运行镜像

nvidia-docker run -it -p 10029:22 -p 5009:80 -v ~/workspace:/root/workspace --name "ly_cu9.2pytorch1.3.1" --shm-size 15710886400 kaixhin/cuda-caffe:8.0 
-i  交互模式运行
-t  tty模式运行,进入终端
-p  端口映射 本地端口:docker内部端口  如:-p 5000:80
#必须设置80端口映射,否则在容器中下载会无法联网,如果有需要可以自行添加更多端口映射
-v  文件路径映射,使用文件方便  本地路径:docker内部路径 如:-v ~/longlongaaago/workspace/docker:/root/workspace
--name "启动后容器的名字" 如:"longlongaaago"
镜像id 或 镜像名字:tag   如: kaixhin/cuda-caffe:8.0

--shm-size memory size of the docker

4.容器状态下 退出

exit

5.查看正在运行的容器

docker ps

6.查看所有容器,包括睡眠容器

docker ps -a

7.开启睡眠中的容器

docker start ID/name

8.进入正在运行的容器

docker attach ID/Name
#此方式进入容器之后,exit 会将运行中的容器退出  不推荐
#必须在容器开启之后

9.进入正在运行的容器且不影响退出

docker exec -it id/Name /bin/bash
#以交互的方式进入正在运行的docker
#必须在容器开启之后

10.说明:

#运行之后 对于Docker来说,image是静态的,类似于操作系统快照,而容器(container)则是动态的,  
是image的运行实例.容器(container),相当于进程;镜像可(image)以理解为躺在硬盘里的程序;  
把更改后的容器(比如装了个软件等等)进行镜像保存,就是新的镜像了.  
不过,容器(container)在运行退出(exit)之后,任然会保存之前的操作记录,只是区别在于不能像镜像  
一样进行分发.

11.删除容器

docker rm 容器id

12.删除image

sudo docker rmi image_id

----------------------------------

上传镜像

1.save image

docker commit container_id images_name

2.如果没有登录就先登录,没账号就注册吧!==》https://hub.docker.com  

docker login

3.按照提示输入用户名和密码,登录成功,然后上传自己的镜像,例如我要上传 xxxsdsaasd 镜像 (lualong 是我的要上传的账号,即改成对应的用户名)

docker tag xxxsdsaasd lualong/xxxsdsaasd

4.上传 
 

docker push lualong/xxxsdsaasd
#注意,这里的lualong 是对应你账号的用户名,作为前缀进行上传

 

参考博客


2.docker 修改镜像配置参考

https://www.jb51.net/article/116873.htm