在 wsl-ubuntu 里通过 docker 启动 gpu-jupyter

在 wsl-ubuntu 里通过 docker 启动 gpu-jupyter

  • [0. 背景](#0. 背景)
  • [1. 安装 docker-ce](#1. 安装 docker-ce)
  • [2. 安装 NVIDIA Container Toolkit](#2. 安装 NVIDIA Container Toolkit)
  • [3. 使用 nvidia-ctk 命令配置容器运行](#3. 使用 nvidia-ctk 命令配置容器运行)
  • [4. 通过 docker 运行 nvidia-smi](#4. 通过 docker 运行 nvidia-smi)
  • [5. 运行 gpu-jupyter](#5. 运行 gpu-jupyter)
  • [6. 访问 gpu-jupyter](#6. 访问 gpu-jupyter)
  • [7. 测试 gpu-jupyter 是否可以访问 cuda](#7. 测试 gpu-jupyter 是否可以访问 cuda)

0. 背景

今天突然想尝试一下在 wsl-ubuntu 里通过 docker 启动支持 gpu 的 jupyter,那就开始着手干吧。

1. 安装 docker-ce

在 wsl-ubuntu 里面安装 docker-ce,先运行以下命令卸载所有冲突的包,

复制代码
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

使用 apt 存储库安装,设置 Docker 的 apt 存储库。

复制代码
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

安装 Docker 软件包。

复制代码
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

通过运行 hello-world 映像来验证 Docker 引擎安装是否成功。

复制代码
sudo docker run hello-world

您现在已经成功安装并启动了 Docker Engine。

refer: https://docs.docker.com/engine/install/ubuntu/

2. 安装 NVIDIA Container Toolkit

使用 Apt 安装,配置生产存储库,

复制代码
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

从存储库更新包列表,

复制代码
sudo apt-get update

安装 NVIDIA Container Toolkit 软件包,

复制代码
sudo apt-get install -y nvidia-container-toolkit

refer: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

3. 使用 nvidia-ctk 命令配置容器运行

使用 nvidia-ctk 命令配置容器运行时,

复制代码
sudo nvidia-ctk runtime configure --runtime=docker

nvidia-ctk 命令修改主机上的 /etc/docker/daemon.json 文件。该文件已更新,以便 Docker 可以使用 NVIDIA 容器运行时。

重新启动 Docker 守护进程,

复制代码
sudo systemctl restart docker

refer: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

4. 通过 docker 运行 nvidia-smi

使用 Docker 运行示例工作负载,

复制代码
sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

输入结果如下,

refer: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/sample-workload.html

5. 运行 gpu-jupyter

使用 Docker 运行 gpu-jupyter,

复制代码
mkdir /u01/data/jupyter-work; chmod 777 /u01/data/jupyter-work
docker run --gpus all -d --name gpu-jupyter --network host -v /u01/data/jupyter-work:/home/jovyan/work -e GRANT_SUDO=yes -e JUPYTER_ENABLE_LAB=yes --user root cschranz/gpu-jupyter:v1.6_cuda-12.0_ubuntu-22.04

refer: https://github.com/iot-salzburg/gpu-jupyter

6. 访问 gpu-jupyter

查看 gpu-jupyter 的 login token,

复制代码
token=$(docker exec -it gpu-jupyter jupyter server list | grep -oP '(?<=token=)[a-zA-Z0-9]+')
echo $token

使用浏览器打开 http://127.0.0.1:8888/lab 进行访问,

7. 测试 gpu-jupyter 是否可以访问 cuda

复制代码
import torch
torch.cuda.is_available()

torch.__version__

输出结果如下,

完结!

相关推荐
艾伦_耶格宇2 小时前
【docker】-1 docker简介
运维·docker·容器
cuijiecheng20182 小时前
Ubuntu下布署mediasoup-demo
linux·运维·ubuntu
IvanCodes3 小时前
二、Docker安装部署教程
docker·容器
保持学习ing8 小时前
day1--项目搭建and内容管理模块
java·数据库·后端·docker·虚拟机
susu10830189119 小时前
Debian 11 Bullseye 在线安装docker
运维·docker·debian
love530love10 小时前
Docker 稳定运行与存储优化全攻略(含可视化指南)
运维·人工智能·windows·docker·容器
人生匆匆10 小时前
docker进入启动失败的容器
运维·docker·容器
bemyrunningdog11 小时前
Mock数据
linux·运维·ubuntu
Winner130012 小时前
Debian、Buildroot 和 Ubuntu 都是基于 Linux 的系统区别
linux·ubuntu·debian
魂尾ac14 小时前
Centos Docker 安装(100%成功)
linux·docker·centos