yangliuhbhd 2020-01-28
容器将应用程序封装到隔离的虚拟环境中,以简化数据中心的部署。通过将所有应用程序依赖项 (例如二进制文件和库) 都包括在内,应用程序容器能在任何数据中心环境中无缝地运行。
英伟达基于Docker 提供的NVIDIA-Docker可用于容器化 GPU 加速的应用程序。这意味着无需进行任何修改即可轻松容器化和隔离加速的应用程序,并将其部署到任何受支持的、可使用 GPU 的基础架构上。 管理和监控加速的数据中心将变得空前容易。
在前面的博文中,我们已经介绍了在Ubuntu系统中安装GPU环境的方法,对于还没有完成这些前提步骤的读者,可以参考:
《在Ubuntu 18.04安装NVIDIA GPU驱动》
《在Ubuntu 18.04中配置GPU环境:安装CUDA 9.0等》
你可以在命令行输入 nvcc --version来查看一下当前环境下的CUDA版本,如下图所示:
这部分主要参考官网上关于Docker的文档页“Get Docker CE for 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镜像。如果安装正确,执行后的结果应该类似下面这样:
安装完成Docker并检查安装正确(能跑出来hello-world)后,如果需要Docker容器中有GPU支持,需要再安装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
如下图所示: