Docker(NVIDIA-Docker)安装
一、Docker简介
docker是一种容器技术,是直接运行在操作系统内核之上的用户空间。因此,也被称为“操作系统级虚拟化”,可以让多个独立的用户空间运行在同一台宿主机上。由于“客居”于操作系统,docker容器只能运行与底层宿主机相同或者相似的操作系统。docker容器被认为是精益技术,因为容器需要的开销有限,和传统虚拟化以及半虚拟化相比,容器不需要模拟层(emulation layer)和管理层(hypervisor layer),而是使用操作系统的系统调用接口。这降低了运行单个容器所需的开销,也使得宿主机中可以运行更多的容器。docker容器技术有以下特点:①上手快;②职责的逻辑分类;③ 快速高效的开发生命周期;④鼓励使用面向服务的架构。
Docker是一个客户端-服务器(C/S)架构程序。Docker客户端只需要向Docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。Docker提供了一个命令行工具Docker以及一整套RESTful API。你可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。
Docker可以帮助你构建和部署容器,你只需要把自己的应用程序或者服务打包放进容器即可。容器是基于镜像启动起来的,容器中可以运行一个或多个进程。我们可以认为,镜像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。 容器基于镜像启动,一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件或者服务。
Docker镜像是由文件系统叠加而成(是一种文件的存储形式)。最底端是一个文件引导系统,即bootfs,这很像典型的Linux/Unix的引导文件系统。Docker用户几乎永远不会和引导系统有什么交互。实际上,当一个容器启动后,它将会被移动到内存中,而引导文件系统则会被卸载,以留出更多的内存供磁盘镜像使用。Docker容器启动是需要的一些文件,而这些文件就可以称为Docker镜像。
二、Docker及NVIDIA-Docker的安装
一)Docker CE安装(基础安装:在NVIDIA Docker安装之前)
官方:https://docs.docker.com/install/linux/docker-ce/ubuntu/
Docker的安装有三种方式:(1)通过建立Docker远程仓库并从仓库安装,以便于安装与升级任务(官方推荐);(2)下载安装文件(.deb文件),离线手动安装Docker;(3)在测试与开发环境中,一些用户选择使用自动化脚本安装docker。
1、通过建立仓库安装Docker
1)卸载旧版本
sudo apt-get remove docker docker-engine docker-ce docker.io
2)更新apt索引
sudo apt-get update
3)安装三方包使得apt能够通过http使用仓库
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
4)添加Docker的官方GPG秘钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
5) 通过查找指纹秘钥的最后八个字符确认现在已经拥有指纹秘钥9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
sudo apt-key fingerprint 0EBFCD88
打印出如下内容:
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
7) 现在正式开始安装,同样更新apt索引
sudo apt-get update
8)安装最新版本的Docker CE
sudo apt-get install docker-ce docker-ce-cli containerd.io
9)安装特定版本Docker CE
要安装特定版本的Docker CE则需要列出仓库中现有的版本。
apt-cache madison docker-ce
docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.06.1~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.06.0~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
...
接下来安装你想要安装的版本,比如5:18.09.1~3-0~ubuntu-xenial
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
10)安装完成后,验证是否安装成功
sudo docker run hello-world
为了后续使用的时候不再使用sudo,需要加入用户组以获得root权限
sudo groupadd docker
sudo usermod -aG docker $USER
docker run hello-world(前面没有了sudo)
2、离线安装文件安装Docker
这种方式安装貌似还更加简洁,但是如果你需要升级版本则需要重新下载新版本安装文件,卸载之前的版本。
1)去官网https://download.docker.com/linux/ubuntu/dists/
进入目录pool/stable/选择和你的ubuntu版本对应的安装文件,有这几个选择:amd64, armhf, arm64, ppc64el, or s390x,下载对应的.deb安装文件。
2)下载号以后运行如下命令安装:
sudo dpkg -i /path/to/package.deb
3)验证安装成功与否
sudo docker run hello-world
3、通过脚本安装Docker (官方不推荐适用于生产环境)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker your-user
二)、NVIDIA Docker 安装
参考nvidia docker官方https://github.com/NVIDIA/nvidia-docker给出的安装步骤:
# If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
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
# 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
# Install nvidia-docker2 and reload the Docker daemon configuration
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
# Test nvidia-smi with the latest official CUDA image
docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi
注意:安装完NVIDIA Docker 之后,运行docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi可能会如下错误而无法正常运行:
docker: Error response from daemon: Unknown runtime specified nvidia. 解决办法:
Step1:Systemd drop-in file
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/override.conf <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Step2:Daemon configuration file
sudo tee /etc/docker/daemon.json <<EOF
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
EOF
sudo pkill -SIGHUP dockerd
至此Docker及NVIDIA Docker安装完结!