在 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__

输出结果如下,

完结!

相关推荐
杨浦老苏1 小时前
简单直观的笔记管理器Poznote
笔记·docker·群晖
RisunJan4 小时前
docker一键部署项目
运维·docker·容器
你的人类朋友4 小时前
😎 Node.js 应用多阶段构建 Dockerfile 详解
后端·docker·容器
赴遥5 小时前
WSL2下Ubuntu20.04图形化环境配置
ubuntu·wsl2·xfce4·图形化页面
hweiyu006 小时前
Docker(K8S)容器架构教程(视频教程)
docker·架构·kubernetes
AllenZ10 小时前
🐳 Docker Compose 项目目录被删除后,如何安全关停残留容器
docker
jyan_敬言11 小时前
【Docker】定义和运行多容器应用程序
运维·docker·容器·学习方法
Theliars11 小时前
Ubuntu 上使用 VSCode 调试 C++ (CMake 项目) 指南
c++·vscode·ubuntu·cmake
权泽谦11 小时前
从 Linux 到 Docker:一条通向 DevOps 的进阶之路
linux·docker·devops
Radan小哥11 小时前
Docker学习笔记---day001
笔记·学习·docker