Ubuntu 24.04でCUDA環境をDockerで構築する

メモ。 Docker公式に24.04のイメージが公開されていなかったが、22.04のものでもとりあえず動作した(ように見える)

CUDAをDockerで動かすにはNvidia Driver, Docker, NVIDIA container toolkitのインストールが必要。 公式のイメージにCUDAとcudnnは含まれている。

参考サイト www.kkaneko.jp qiita.com

Nvidia Driverのインストール

sudo apt -y update
sudo apt -y install linux-headers-$(uname -r)

sudo apt -y update
sudo apt -y upgrade
sudo apt dist-upgrade
ubuntu-drivers devices
sudo ubuntu-drivers autoinstall
sudo update-initramfs -u

Dockerのインストール

公式サイトを参考にDocker Engineをインストール

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

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

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] 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

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo docker run hello-world
sudo groupadd docker
sudo usermod -aG docker $USER

私の環境だとエラーが出たが、次のコマンドで対処できた。

sudo chmod 666 /var/run/docker.sock

参考リンク qiita.com

NVIDIA container toolkitのインストール

公式サイトを参考にインストールする

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

sudo apt-get install -y nvidia-container-toolkit

sudo systemctl restart docker

nvidia-container-cli info

コンテナの起動

docker pull nvidia/cuda:12.4.1-cudnn-devel-ubuntu22.04

sudo docker run --gpus all nvidia/cuda:12.4.1-cudnn-devel-ubuntu22.04 nvidia-smi
sudo docker run -it -d --gpus all --name gpu_env nvidia/cuda:12.4.1-cudnn-devel-ubuntu22.04 bash

docker exec -it gpu_env bash

nvcc -V