メモ。 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