vkgs-sim / scripts /host_install_docker.sh
kimjunhan's picture
Add files using upload-large-folder tool
4c75661 verified
Raw History Blame Contribute Delete
4.29 kB
#!/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