docker 和 nvidia-docker 的离线安装和基本使用

本文介绍 dockernvidia-docker 的安装和基本使用,关于 docker 的具体介绍请查看相关网站进行学习。

环境

  • ubuntu 16.04
  • docker 19.03
  • nvidia-docker2

docker 离线安装

网站docker download 下载如下三个文件:

1.png

在文件下载目录运行:

1
dpkg -i *.deb # 没有先后顺序

若遇到缺少依赖包,使用 apt-get -f install 命令修复后再安装上述包。

运行:

1
sudo docker run hello-world

1.png

出现上述信息,说明 docker 安装成功。

docker 命令需要使用root用户才能执行,如果希望用非root用户执行 docker命令,可以执行以下语句。

1
sudo usermod -aG docker $your-user

注意:执行完成后,需要退出再登陆才能生效。

nvidia-docker 离线安装

nvidia-docker 安装之前要先安装好 nvidia 驱动,但不需要安装 CUDA。

1 在一条有网的机器上,运行以下命令:

1
2
3
4
5
6
7
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

$ curl -s -L https://nvidia.github.io/nvidia-docker/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

2 执行以下5个命令,下载5个包到当前目录,拷贝这些包到离线服务器上:

1
2
3
4
5
6
7
8
9
apt download libnvidia-container1

apt download libnvidia-container-tools

apt download nvidia-container-toolkit

apt download nvidia-container-runtime

apt download nvidia-docker2

3 离线服务器上依次运行以下命令,顺序不能颠倒:

1
2
3
4
5
6
7
8
9
dpkg -i libnvidia-container1

dpkg -i libnvidia-container-tools

dpkg -i nvidia-container-toolkit

dpkg -i nvidia-container-runtime

dpkg -i nvidia-docker2

4 运行:

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

1.png

出现上述信息,说明 nvidia-docker 安装成功。

镜像加速

参考:https://yeasy.gitbooks.io/docker_practice/install/mirror.html

镜像相关操作

1
2
3
4
5
6
7
8
9
10
11
12
13
docker search mmdetection # 搜索镜像

docker pull qianjaingyuan/mmdetection # 拉去镜像

docker images # 列出镜像

docker rmi mmdetection # 删除镜像

docker save -o mmdet.tar 镜像ID # 保存镜像为本地文件

docker load -i mmdet.tar # 加载镜像文件

docker tag 镜像ID mmdet:v1

容器相关操作

1
2
3
4
5
6
7
8
9
# 运行容器,如果需要使用GPU,使用nvidia-docker
nvidia-docker run -itd --ipc=host -v $PWD/data/:/mmdetection/data/ -v $PWD/result/:/mmdetection/work_dirs 镜像ID /bin/bash

# 解释
# -i 交互式操作
# -t 终端
# -d 后台运行
# --ipc=host 容器与主机共享内存
# -v 将宿主的目录挂载到容器
1
2
3
4
5
6
7
8
9
10
11
12
docker ps # 列出当前正在运行的容器
docker ps -a # 列出所有容器

docker stop <容器 ID> # 停止容器

docker restart <容器 ID> # 容器容器

docker exec -it <容器 ID> /bin/bash # 进入容器,退出容器终端,不会导致容器的停止

docker rm -f <容器 ID> # 删除容器

docker commit <容器 ID> <镜像名:镜像标签> # 通过容器提交镜像
1
2
3
4
5
6
7
8
# 将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下
docker cp /www/runoob 96f7f14e99ab:/www/

# 将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www
docker cp /www/runoob 96f7f14e99ab:/www

# 将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中
docker cp 96f7f14e99ab:/www /tmp/

docker 命令帮助文档

1
docker commit --help

1.png

vscode 中使用 docker

首先安装官方的 docker 插件,左侧出现 docker 按钮,可以对镜像和容器进行

简单的操作。

1.png

参考

  1. docker 从入门到实践
  2. docker 菜鸟教程