nvidia-docker操作命令

天涯浪子 提交于 2020-03-05 11:31:39

# nvidia-docker安装部署以及操作手册
前言
docker和nvidia-docker的区别
由于我们深度学习需要用到GPU,使用docker时,需要映射设备等等,docker容器对宿主机的依赖就会很多也就失去了便捷,并不能让我们很舒服的迁移环境,nvidia-docker则很好的封装了这些,只需要容器内的cuda版本和宿主机相同就行(这个要求很低了,而且这个要求现在也基本可以通过docker hub上别人做好的带有各种cuda版本的镜像来满足,所以几乎无要求)
其实nvidia-docker只是run 和 exec命令和docker执行不同,其余的和docker执行的一模一样

## 1.卸载 nvidia-docker 1.0 及其他GPU容器

```
$ docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
$ sudo apt-get purge -y nvidia-docker
```

## 2. 添加package repositories

```
$curl -s -L https://nvidia.github.io/libnvidia-container/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 apt-get update
```

## 3. 安装 nvidia-docker2

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

## 4. 测试安装,查看显卡使用情况

```
$ docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi
```

## 5.启动nvidia-docker服务

```
$ systemctl start nvidia-docker
$ systemctl status nvidia-docker
```

## 6.指定gpu启动

```
$ NV_GPU=1 nvidia-docker run -v /matt/docker:/mnt $container --rm -ti matt/docker bash

```
## 7.容器改名

```
$ sudo nvidia-docker tag A B (将A改名为B)

```
## 8.进入容器

```
$ docker exec -it 容器名 /bin/bash

```
## 9.将容器保存为一个镜像

```

$ docker commit containerId demo:v1.0 (新的镜像名称为demo,版本为v0.2)

```

## 10.使用镜像(进入镜像)

```
$ docker run -it demo:v1.0 bash

```
## 11.docker中做端口映射

```
$ docker run -it -d -p 0.0.0.0:5000 demo:v1.0 bash

```
例:将容器的80端口映射到宿主机的8000端口上:

```
docker run -itd -p 8000:80 demo:v1.0 /bin/bash

```
## 12.将宿主机的文件拷贝到容器中

```
$ docker cp [-a] libcudart.so.9.0 clever_hawking:/usr/lib(clever_hawking是容器名,-a 是以打包的方式传)

```
## 13.将容器中的文件拷贝到宿主机中

```
$ docker cp mycontainer:/opt/testnew/file.txt /opt/test/

```
## 14.docker容器查看ip地址

```
$ apt-get install net-tools -y 安装net-tools
$ ifconfig 然后利用ifconfig

```
## 15.容器管理

```
docker ps : 列出正在运行的容器
docker ps -a: 列出正在运行的和已经停止的容器
docker rm 容器id:删除指定容器
docker rm $(docker ps -a -q):删除所有已经停止的容器
docker stop 容器id:停止运行指定容器
docker start 容器id:启动指定容器
sudo docker exec -it 容器名称 /bin/bash 进入到正在运行的容器中

```
## 16.镜像管理

```
docker images :列出宿主机存在的所有镜像
docker rmi 镜像id:删除指定镜像
docker rmi -f 镜像id:强制删除指定镜像
docker build -t 镜像名:版本 路径:根据路径下的Dockerfile文件创建一个镜像
注:创建时会将指定路径下的所有文件都先上传,所以最好将Dockerfile文件放在单独的目录下。

```
## 17.导入镜像

```
docker load : 导入使用 docker save 命令导出的镜像。
例:docker load < line.tar

```

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!