Docker 是一个开源的应用容器引擎,它让开发者可以打包他们的应用以及依赖,然后放到一个可移植的容器中,再发布到任何流行的 Linux
机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。



容器将应用程序封装到隔离的虚拟环境中,以简化数据中心的部署。通过将所有应用程序依赖项 (例如二进制文件和库)
都包括在内,应用程序容器能在任何数据中心环境中无缝地运行。

英伟达基于Docker 提供的NVIDIA-Docker可用于容器化 GPU
加速的应用程序。这意味着无需进行任何修改即可轻松容器化和隔离加速的应用程序,并将其部署到任何受支持的、可使用 GPU 的基础架构上。
管理和监控加速的数据中心将变得空前容易。

 

一、安装Docker

在前面的博文中,我们已经介绍了在Ubuntu系统中安装GPU环境的方法,对于还没有完成这些前提步骤的读者,可以参考:

《在Ubuntu 18.04安装NVIDIA GPU驱动》
<https://blog.csdn.net/baimafujinji/article/details/79580902>

《在Ubuntu 18.04中配置GPU环境:安装CUDA 9.0等》
<https://blog.csdn.net/baimafujinji/article/details/89506896>

你可以在命令行输入 nvcc --version来查看一下当前环境下的CUDA版本,如下图所示:



这部分主要参考官网上关于Docker的文档页“Get Docker CE for Ubuntu”
<https://docs.docker.com/install/linux/docker-ce/ubuntu/>
,同样推荐读者查阅。我们基本是按照其中的步骤进行安装的。有时,Ubuntu上会默认安装有Docker。若先前有安装Docker,则需要先卸载(写在的方法在官方文档上有详细介绍)。为了确定本机上没有安装Docker,执行命令:
docker run hello-world。如下所示,可见我的机器上并没有安装Docker,所以可以继续后面的步骤。



首先用下面的命令更新apt 包的索引:
$ sudo apt-get update
如下图所示:



把Docker仓库加进到apt里,反斜杠\代表一行,只是换行写更清晰:
$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \
gnupg-agent \ software-properties-common
如下图所示:



添加Docker的官方GPG key:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
验证当前你所拥有的key的指纹是9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF
CD88,方法是搜索指纹中的后八个字符。
$ sudo apt-key fingerprint 0EBFCD88
然后用下面的语句来建立稳定的仓库:
$ sudo add-apt-repository \ "deb [arch=amd64]
https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
 如下图所示:



接下来正式安装docker:
$ sudo apt-get update $ sudo apt-get install docker-ce
 如下图所示:



最后一个命令是验证docker是否安装成功,它会下载并执行hello-world镜像。如果安装正确,执行后的结果应该类似下面这样:



二、安装NVIDIA-Docker


安装完成Docker并检查安装正确(能跑出来hello-world)后,如果需要Docker容器中有GPU支持,需要再安装NVIDIA-Docker,同样参考该项目的主页(
链接 <https://github.com/NVIDIA/nvidia-docker>)。

可以看到在Quick start小节,选择我们Ubuntu的发行版,依次执行命令:
# Add the package repositories 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
如下图所示:



正式安装NVIDIA-Docker:
# Install nvidia-docker2 and reload the Docker daemon configuration sudo
apt-get install -y nvidia-docker2 sudo pkill -SIGHUP dockerd
用最新的CUDA镜像来测试一下nvidia-smi(检查是否安装成功,安装成功,则会显示关于GPU的信息)。
# Test nvidia-smi with the latest official CUDA image docker run
--runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi
如下图所示:



三、用Docker(NVIDIA-Docker)载入TensorFlow镜像

参考Dockerhub关于Tensorflow的页面(链接 <https://hub.docker.com/r/tensorflow/tensorflow/>
),主要是“Running Containers”部分。例如,如果要开启一个基于Python2、CPU版的TensorFlow,可以使用:
$ docker run -it --rm tensorflow/tensorflow bash

或者,开启一个基于Python3、GPU版的TensorFlow(可根据需要的版本指定镜像),并开启容器。注意,这里我们使用的Tag是1.10.0-gpu-py3。因为CUDA的版本是9.0,太高版本的TensorFlow不支持。更多的可选Tag可以查阅
链接 <https://hub.docker.com/r/tensorflow/tensorflow/tags/>。

来看一下执行的结果。



可见,我们已经成功地用NVIDIA-Docker导入GPU版本的TensorFlow镜像了。

 

 

 

(本文完)