File size: 4,292 Bytes
4c75661 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | #!/usr/bin/env bash
# ํธ์คํธ์ Docker Engine + NVIDIA Container Toolkit ์ค์น.
# sudo ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฌผ์ด๋ณด๋ฏ๋ก ๋ฐ๋์ ์ฌ์ฉ์๊ฐ ์ง์ ์คํํด์ผ ํฉ๋๋ค.
# Claude Code ํ๋กฌํํธ์์: ! bash scripts/host_install_docker.sh
set -euo pipefail
say() { printf '\n\033[1;36m==> %s\033[0m\n' "$*"; }
ok() { printf '\033[1;32m โ %s\033[0m\n' "$*"; }
warn() { printf '\033[1;33m ! %s\033[0m\n' "$*"; }
die() { printf '\033[1;31m โ %s\033[0m\n' "$*" >&2; exit 1; }
[[ $EUID -eq 0 ]] && die "root๋ก ์ง์ ์คํํ์ง ๋ง์ธ์. ์ผ๋ฐ ์ฌ์ฉ์๋ก ์คํํ๋ฉด sudo๋ฅผ ์์์ ์๋๋ค."
. /etc/os-release
say "ํธ์คํธ: $PRETTY_NAME ($VERSION_CODENAME / $(dpkg --print-architecture))"
[[ "$ID" == "ubuntu" ]] || warn "Ubuntu๊ฐ ์๋๋๋ค โ ์ด ์คํฌ๋ฆฝํธ๋ Ubuntu ๊ธฐ์ค์
๋๋ค."
command -v nvidia-smi >/dev/null || die "nvidia-smi ๊ฐ ์์ต๋๋ค. NVIDIA ๋๋ผ์ด๋ฒ๋ถํฐ ์ค์นํ์ธ์."
ok "$(nvidia-smi --query-gpu=name,driver_version --format=csv,noheader | head -1)"
say "sudo ๊ถํ ํ์ธ (๋น๋ฐ๋ฒํธ๋ฅผ ๋ฌผ์ด๋ณผ ์ ์์ต๋๋ค)"
sudo -v || die "sudo ์คํจ"
# ์ค์น๊ฐ ๊ธธ์ด์ง๋ ๋์ sudo ํ์์์ ๋ฐฉ์ง
while true; do sudo -n true; sleep 50; kill -0 "$$" 2>/dev/null || exit; done 2>/dev/null &
SUDO_KEEPALIVE=$!
trap 'kill $SUDO_KEEPALIVE 2>/dev/null || true' EXIT
# ---------------------------------------------------------------- 1. Docker
if command -v docker >/dev/null && docker --version >/dev/null 2>&1; then
ok "Docker ์ด๋ฏธ ์ค์น๋จ: $(docker --version)"
else
say "1/3 Docker Engine ์ค์น"
for p in docker.io docker-doc docker-compose podman-docker containerd runc; do
sudo apt-get remove -y "$p" >/dev/null 2>&1 || true
done
sudo apt-get update -qq
sudo apt-get install -y -qq ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $VERSION_CODENAME stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update -qq
sudo apt-get install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
ok "์ค์น๋จ: $(docker --version)"
fi
say "Docker ๋์ ํ์ธ (hello-world)"
sudo docker run --rm hello-world >/dev/null && ok "Docker ๋ฐํ์ ์ ์"
# ------------------------------------------------- 2. NVIDIA Container Toolkit
if command -v nvidia-ctk >/dev/null; then
ok "nvidia-container-toolkit ์ด๋ฏธ ์ค์น๋จ: $(nvidia-ctk --version | head -1)"
else
say "2/3 NVIDIA Container Toolkit ์ค์น"
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
| sudo gpg --dearmor --yes -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 > /dev/null
sudo apt-get update -qq
sudo apt-get install -y nvidia-container-toolkit
fi
say "docker ๋ฐ๋ชฌ์ nvidia ๋ฐํ์ ๋ฑ๋ก"
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
sleep 3
say "GPU ํจ์ค์ค๋ฃจ ํ์ธ"
sudo docker run --rm --gpus all nvidia/cuda:12.1.1-base-ubuntu22.04 nvidia-smi \
| sed -n '1,12p' && ok "์ปจํ
์ด๋์์ GPU ๋ณด์"
# --------------------------------------------------------- 3. docker ๊ทธ๋ฃน
say "3/3 $USER ๋ฅผ docker ๊ทธ๋ฃน์ ์ถ๊ฐ"
if id -nG "$USER" | tr ' ' '\n' | grep -qx docker; then
ok "์ด๋ฏธ docker ๊ทธ๋ฃน ์์"
else
sudo usermod -aG docker "$USER"
warn "๊ทธ๋ฃน ๋ณ๊ฒฝ์ '์ฌ๋ก๊ทธ์ธ' ํ์ ์ ์ฉ๋ฉ๋๋ค."
warn "๊ทธ๋๊น์ง ์ด ํ๋ก์ ํธ ์คํฌ๋ฆฝํธ๋ค์ ์๋์ผ๋ก 'sudo docker' ๋ก ํด๋ฐฑํฉ๋๋ค."
fi
say "์๋ฃ"
cat <<'MSG'
๋ค์ ๋จ๊ณ:
bash scripts/build.sh # ๊ฐ๋ฐ ์ด๋ฏธ์ง ๋น๋
bash scripts/run.sh # ์ปจํ
์ด๋ ๊ธฐ๋
bash scripts/shell.sh # ์
ธ ์ง์
MSG
|