Docker 安装 和 GPU 支持

一、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了:

猜你喜欢

转载自blog.csdn.net/ytusdc/article/details/131854074