ubuntu安装docker及nvidia-container-toolkit(nvidia-docker和nvidia-docker2)

1 安装Docker

1.1 卸载旧版本

旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本:

sudo apt-get remove docker \
               docker-engine \
               docker.io

1.2 使用 APT 安装

sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。
鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 官方源
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

然后,我们需要向 sources.list 中添加 Docker 软件源:

echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


# 官方源
# echo \
#   "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
#   $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

以上命令会添加稳定版本的 Docker APT 镜像源,如果需要测试版本的 Docker 请将 stable 改为 test。

1.3 安装Docker

更新 apt 软件包缓存,并安装 docker-ce:

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io

1.4 将docker添加到非root用户

以非root用户身份管理Docker

Docker守护程序绑定到Unix套接字而不是TCP端口。默认情况下,Unix套接字由用户拥有root,其他用户只能使用sudo来访问它。Docker守护程序始终以root用户身份运行。

如果你不想在前言docker与命令sudo,创建一个名为UNIX组docker和用户添加到它。Docker守护程序启动时,它会创建一个可由该docker组成员访问的Unix套接字。

创建用户组

sudo groupadd docker

将您的用户添加到该docker组。

sudo usermod -aG docker ${用户名}

如果没有用则

sudo gpasswd -a ${用户名} docker

然后重启docker

systemctl restart docker

最后给docker.sock加权

sudo chmod a+rw /var/run/docker.sock

2 安装nvidia-container-toolkit

nvidia-docker和nvidia-docker2已经被英伟达迭代了,使用的话会出现别的问题,可以认为nvidia-container-toolkit是nvidia-docker和nvidia-docker2的替代品,它可以让您在Docker容器中使用NVIDIA GPU。参考:
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/index.html

nvidia-container-toolkit是一组软件包,它们包括一个容器运行时库和一些工具,可以自动配置容器来利用NVIDIA GPU。它支持不同的容器引擎,如Docker、containerd、LXC、Podman等。https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/index.htmlhttps://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

要使用nvidia-container-toolkit,您需要满足以下条件:

这里按照官方推荐使用nvidia-container-toolkit会更好,此处给出安装成功的方法:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -

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 && sudo apt-get install -y nvidia-container-toolkit

sudo systemctl restart docker

测试一下:

sudo docker run --rm --gpus all nvidia/cuda:${根据网站查询得到} nvidia-smi

# 例如
sudo docker run --rm --gpus all nvidia/cuda:11.7.1-base-ubuntu20.04 nvidia-smi

supported-tags中找到与自己系统对应的cuda版本,并将${根据网站查询得到}改成对应的版本
成功参考:
测试:sudo docker run --rm --gpus all nvidia/cuda:11.7.1-base-ubuntu20.04 nvidia-smi

3 参考博客

Docker-从入门到实践
ubuntu下快速配置TAO toolkit进行模型训练学习