Add script to prepare Ubuntu host for GPU-enabled Docker containers
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
#!/bin/bash
|
||||
# setup_nvidia_docker.sh
|
||||
# Prepares Ubuntu 24.04 host for GPU-enabled Docker containers with Hashcat
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
echo "[*] Updating system..."
|
||||
apt update && apt -y upgrade
|
||||
|
||||
echo "[*] Installing prerequisites..."
|
||||
apt -y install curl wget gnupg software-properties-common lsb-release
|
||||
|
||||
echo "[*] Checking for NVIDIA driver..."
|
||||
if ! command -v nvidia-smi &>/dev/null; then
|
||||
echo "[*] Installing NVIDIA driver..."
|
||||
apt -y install nvidia-driver-575 nvidia-utils-575
|
||||
else
|
||||
echo "[+] NVIDIA driver already installed."
|
||||
nvidia-smi || true
|
||||
fi
|
||||
|
||||
echo "[*] Installing Docker..."
|
||||
if ! command -v docker &>/dev/null; then
|
||||
curl -fsSL https://get.docker.com | sh
|
||||
systemctl enable --now docker
|
||||
else
|
||||
echo "[+] Docker already installed."
|
||||
fi
|
||||
|
||||
echo "[*] Installing Docker Buildx plugin..."
|
||||
apt -y install docker-buildx-plugin || {
|
||||
echo "[!] docker-buildx-plugin not available via apt, installing manually..."
|
||||
mkdir -p /usr/local/lib/docker/cli-plugins
|
||||
BUILDX_VERSION=$(curl -s https://api.github.com/repos/docker/buildx/releases/latest | grep '"tag_name"' | cut -d'"' -f4)
|
||||
curl -Lo /usr/local/lib/docker/cli-plugins/docker-buildx \
|
||||
"https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/buildx-${BUILDX_VERSION}.linux-amd64"
|
||||
chmod +x /usr/local/lib/docker/cli-plugins/docker-buildx
|
||||
}
|
||||
|
||||
echo "[*] Installing NVIDIA Container Toolkit..."
|
||||
# Remove any corrupted source list from previous runs
|
||||
rm -f /etc/apt/sources.list.d/nvidia-container-toolkit.list
|
||||
rm -f /etc/apt/sources.list.d/nvidia-toolkit.list
|
||||
rm -f /usr/share/keyrings/nvidia-container-toolkit.gpg
|
||||
rm -f /usr/share/keyrings/nvidia-toolkit.gpg
|
||||
|
||||
# Install GPG key
|
||||
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
|
||||
gpg --dearmor -o /usr/share/keyrings/nvidia-toolkit.gpg
|
||||
|
||||
# Download the official source list and add signed-by
|
||||
curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
|
||||
tee /etc/apt/sources.list.d/nvidia-toolkit.list
|
||||
sed -i -e "s/^deb/deb [signed-by=\/usr\/share\/keyrings\/nvidia-toolkit.gpg]/g" /etc/apt/sources.list.d/nvidia-toolkit.list
|
||||
|
||||
apt update
|
||||
apt -y install nvidia-container-toolkit
|
||||
|
||||
echo "[*] Configuring Docker runtime..."
|
||||
nvidia-ctk runtime configure --runtime=docker
|
||||
systemctl restart docker
|
||||
|
||||
echo
|
||||
echo "[+] Setup complete!"
|
||||
echo "[+] Host will require a restart before Continuing"
|
||||
echo " Test GPU passthrough with:"
|
||||
echo " docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi"
|
||||
echo
|
||||
Reference in New Issue
Block a user