一、Docker安装过程(ubuntu18.04环境)
清华镜像 docker 安装:docker-ce | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
1、由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:
sudo apt-get remove docker docker-engine docker-ce docker.io
2、更新ubuntu的apt源索引
sudo apt-get update
3、配置安装包允许apt通过HTTPS使用仓库
sudo apt-get install \apt-transport-https \ca-certificates \curl \software-properties-common
4、添加Docker官方GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
5、设置Docker稳定版仓库
sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) \stable"
6、再次更新apt源索引
sudo apt-get update
7、安装最新版Docker CE(社区版)
sudo apt-get install docker-ce
8、如果要安装指定版本的docker按如下操作(不需要也可以跳过这步操作)
apt-cache madison docker-ce # 列出可用的docker-ce版本
sudo apt-get install docker-ce=18.06.1~ce~3-0~ubuntu #安装指定的docker版本
9、拉取hello-world镜像测试docker容器
sudo docker run hello-world
这一步如果报错: (Unable to find image ‘hello-world:latest’ locally)
出现如下信息即表示docker安装成功并且运行正常,请参考这一篇文章
最后, 出现如下信息即表示docker安装成功并且运行正常
10、启动 Docker 服务并将其设置为开机启动:
sudo systemctl start docker # 启动
sudo systemctl stop docker # 停止
sudo systemctl restart docker # 重启
sudo systemctl enable docker # 设置开机启动
二、daoker 配置root 权限(可选)
令docker无需root权限,每次都要sudo
Docker daemon(Docker守护进程,可以理解是整个Docker的后台)是绑定了Unix Socket(Unix套接字,一种通讯方式),而不是TCP端口来进行通讯。而对于Unix Socket而言,它默认是属于root用户的,其他用户要使用的话,必须在每句命令前加sudo,这样的话Docker daemon就一直是运行在root用户上了。
这样比较麻烦,我们并不想每句命令都加sudo,再一遍遍地输入密码,那应该怎么办呢?
根据前文,Unix Socket默认归属于root用户,那么我们调整用户就可以了。
换句话说,我们新建一个Unix用户组,名叫docker(当然你可以叫它别的名字),然后在这个用户组中,添加一个用户,这样使得daemon启动的时候,使用的Unix Socket是属于这个用户的,而不是root,那么就不需要sudo了。
注:这样的做法可能会引起安全问题,具体可参考Docker Daemon Attack Surface这篇文档。
避免每次输入命令时都要加上sudo
方法1(这个测试过):
建立docker用户组,并添加用户:
sudo groupadd docker
sudo usermod -aG docker $USER
注销你的账户,重新登陆,使得用户组设置变动生效:
若你使用的是虚拟机,那么你最好重启虚拟机使得设置改动生效
若你是用的桌面操作系统比如Linux某个发行版;MacOS;Windows等,完全注销你的账户,然后再重新登陆使得设置改动生效。
如果你用Linux,你也可以用这样一条指令,来使得改动生效:
newgrp docker
方法2:配置用户组(这个没有测试过):
sudo usermod -a -G docker $USER
检验一下,是否无需sudo:
docker run hello-world
这条指令就会下载一个测试docker用例,并且会提示各种测试的结果,如果提示结果正确,那么就配置正常!
三、在Docker中使用Nvidia GPU
docker发布19.03版本后,在docker中使用GPU变得方便。docker添加了使用gpu的option。使得只需要一个option即可在容器中使用GPU,跳过了复杂的配置大大降低了使用难度。
docker19.03之后,不再需要安装nvidia-docker了。只安装NVIDIA-CONTAINER-RUNTIME就可以使用了,并且支持docker-compose。
1、安装NVIDIA-CONTAINER-RUNTIME
1、查看支持的操作系统和版本,并根据对应选项,添加源, ubuntu 时 基于 Debian 的系统。
官方说明配置软件包仓库地址:Migration Notice | nvidia-container-runtime
2、然后执行下面的命令:
apt-get install nvidia-container-runtime
3、check nvidia-container-runtime是否安装成功
which nvidia-container-runtime-hook
然后重启 docker daemon
2、向容器暴露GPU
运行容器时,添加--gpu参数启用gpu支持
在启动容器时使用--gpus 使主机上的GPU可访问,并且可以配置使用多少块GPU
# 使用所有GPU
docker run -it --rm --gpus all ubuntu nvidia-smi# 使用两个GPU
docker run --gpus 2 ubuntu nvidia-smi# 使用指定 GPU
docker run --gpus '"device=1,2"' ubuntu nvidia-smi
将所有GPU暴露给容器,并调用“nvidia-smi"返回的结果,则表示doker 可以调用 gpu了: