本文介紹如何在 Ubuntu Linux 系統上安裝 NVIDIA 驅動程式與 Docker 容器環境,並進行相關設定,讓 Docker 容器內可以使用 NVIDIA GPU 進行運算。
本文的測試環境為 Ubuntu Linux 24.04.4 LTS。
準備基本 Ubuntu Linux 環境
在安裝好基本的 Ubuntu Linux 系統之後,將所有套件更新至最新版。
# 更新系統套件
sudo apt update
# 更新所有套件
sudo apt dist-upgrade
安裝 NVIDIA 驅動程式
使用 Ubuntu 內建的套件管理工具安裝預設的 NVIDIA 驅動程式。
# 安裝 Ubuntu 驅動程式管理工具
sudo apt install ubuntu-drivers-common
# 安裝預設驅動程式(包涵 NVIDIA 驅動程式)
sudo ubuntu-drivers install
安裝完成驅動程式並重新開機後,確認 NVIDIA 驅動程式有正常運作:
# 確認 NVIDIA 驅動程式有正常運作
nvidia-smi
安裝 Docker 環境
參考 Docker 官方文件,安裝 Docker 容器環境。
先移除舊版 Docker 套件:
# 移除舊版 Docker 套件
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc | cut -f1)
加入 Docker 官方 GPG 金鑰:
# 加入 Docker 官方 GPG 金鑰
sudo apt update
sudo apt 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
加入 Docker 官方套件庫:
# 加入 Docker 官方套件庫
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
安裝 Docker 環境:
# 安裝 Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
確認 Docker 系統服務有正常啟動:
# 顯示 Docker 系統服務狀態
sudo systemctl status docker
安裝完成後,參考 Docker 官方文件,將自己加入 docker 群組,這樣才能正常使用 Docker:
# 設定一般使用者之 Docker 使用權限
sudo usermod -aG docker $USER
重新登入之後,測試一下 Docker 是否可以正常使用:
# 測試 Docker 使用權限
docker ps
若沒有出現錯誤訊息,就表示沒問題。最後實際跑一個 Docker 容器:
# 執行 Docker 測試容器
docker run --rm hello-world
測試完之後,清除 Docker 測試容器影像檔:
# 清除 Docker 測試容器影像檔
docker image rm hello-world
安裝 NVIDIA Container Toolkit
參考 NVIDIA 官方文件,安裝 NVIDIA Container Toolkit,讓 NVIDIA 的 GPU 可以正常在 Docker 容器內運行。
先設定 NVIDIA 的套件庫:
# 安裝必要套件
sudo apt-get update && sudo apt-get install -y --no-install-recommends \
ca-certificates curl gnupg2
# 設定套件庫
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 sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
更新套件庫後,安裝 NVIDIA Container Toolkit:
# 更新套件庫
sudo apt-get update
# 安裝 NVIDIA Container Toolkit
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.20.0-1
sudo apt-get install -y \
nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
接著更新 Docker 設定,讓 GPU 可以在 Docker 容器內正常運行:
# 更新 Docker 設定
sudo nvidia-ctk runtime configure --runtime=docker
# 重新啟動 Docker 服務
sudo systemctl restart docker
確認 Docker 可以正常使用 NVIDIA GPU:
# 確認 Docker 可以正常使用 NVIDIA GPU
docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
執行之後,若有正常顯示 NVIDIA GPU 的資訊,就表示完成了。
最後移除測試用的 Docker 影像檔:
# 移除 Docker 影像檔
docker image rm ubuntu
