Infra

카카오 클라우드 GPU 서버 설치 및 설정 가이드 (Docker + GPU 최적화)

Kun Woo Kim 2025. 5. 30. 09:13
반응형

1. 서버 스펙 정보

이 가이드에서는 다음과 같은 서버 사양으로 설정을 진행합니다:

  • 인스턴스 타입: gn1i.2xlarge (GPU 인스턴스)
  • 운영체제: Ubuntu 20.04 - Nvidia
  • CPU: 8vCPU
  • 메모리: 32GB
  • 저장공간: SSD 60GB

카카오 클라우드 로고


2. 서버 접속하기


2.1 접속 준비

PEM키가 존재하는 폴더로 이동합니다. 필자는 로컬 컴퓨터의 Downloads 폴더에 저장했습니다.

cd Downloads

2.2 SSH를 통한 서버 접속

다운로드한 PEM 키 파일을 사용하여 서버에 접속합니다:

ssh -i quiznote.pem ubuntu@[ip주소]

참고: [ip주소] 부분에는 카카오 클라우드에서 할당받은 실제 IP 주소를 입력해야 합니다.


3. 서버 초기 설정


3.1 시스템 업데이트

서버에 접속한 후 가장 먼저 패키지 목록을 업데이트하고 설치된 패키지를 최신 버전으로 업그레이드합니다:

sudo apt update && sudo apt upgrade -y

3.2 GPU 상태 확인

NVIDIA GPU가 제대로 인식되고 있는지 확인합니다:

nvidia-smi

실행 결과는 다음과 같이 나타납니다:

nvidia-smi 출력 결과


4. Docker 및 NVIDIA Container Toolkit 설치


4.1 Docker 설치

Docker와 NVIDIA Container Toolkit을 설치하여 GPU를 Docker 컨테이너에서 사용할 수 있도록 설정합니다:

# 필요 패키지 설치
sudo apt-get install ca-certificates curl gnupg lsb-release -y

# Docker GPG 키 추가
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Docker 저장소 등록
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 패키지 목록 업데이트
sudo apt-get update

# Docker와 Docker Compose plugin 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

4.2 NVIDIA Container 지원 설치

Docker 컨테이너에서 GPU를 사용하기 위해 두 가지 방법 중 하나를 선택할 수 있습니다. 최신 방법인 NVIDIA Container Toolkit 또는 이전 방법인 nvidia-docker2 중 하나를 설치하세요.


방법 1: NVIDIA Container Toolkit 설치 (권장)

# NVIDIA Container Toolkit 설치
sudo apt-get install nvidia-container-toolkit -y

# Docker 환경에서 GPU 사용가능하도록 runtime 설정
sudo nvidia-ctk runtime configure --runtime=docker

# Docker 서비스 재시작
sudo systemctl restart docker

방법 2: nvidia-docker2 설치 (대체 방법)

일부 환경에서는 NVIDIA Container Toolkit 대신 nvidia-docker2를 사용하는 것이 더 효과적일 수 있습니다:

# NVIDIA Docker 레포지토리 설정
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) && \
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - && \
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# 패키지 설치
sudo apt-get update
sudo apt-get install -y nvidia-docker2

# Docker 서비스 재시작
sudo systemctl restart docker

4.3 GPU 사용 가능 여부 확인

Docker 컨테이너에서 GPU가 제대로 인식되는지 테스트합니다:

sudo docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi

정상적으로 실행되면 다음과 같이 nvidia-smi 명령어의 결과가 표시됩니다.


4.4 Docker 권한 설정

Docker를 sudo 없이 사용하려면 현재 사용자를 docker 그룹에 추가합니다:

sudo usermod -aG docker $USER

변경사항을 적용하려면 로그아웃 후 다시 로그인하거나 다음 명령어를 실행합니다:

newgrp docker

4.5 Docker 설치 확인

Docker와 Docker Compose가 제대로 설치되었는지 확인합니다:

docker --version
docker compose version

다음과 같이 버전 정보가 표시되면 성공적으로 설치된 것입니다:

Docker Compose 버전 확인


5. 프로젝트 클론 및 설정


5.1 Git 저장소 클론


프로젝트 코드를 서버에 가져오기 위해 Git 저장소를 클론합니다:

git clone [git 주소]

중요: [git 주소] 부분에는 실제 프로젝트의 Git 저장소 주소를 입력해야 합니다.

Git 인증 요청

Password 입력 창이 나타나면 GitHub 비밀번호가 아닌 개인 액세스 토큰(Personal Access Token)을 입력해야 합니다. GitHub에서 토큰을 발급받은 후 사용하세요.


5.2 환경 설정 파일 생성

프로젝트 폴더로 이동한 후, 필요한 환경 설정 파일을 생성합니다:

프로젝트 디렉토리

환경 설정 파일 위치

.env 파일은 보안상의 이유로 Git에 포함되지 않는 경우가 많습니다. 따라서 직접 생성해야 합니다:

vim .env

vim 편집기에서 .env 파일 내용을 작성하는 방법:

  1. i 키를 눌러 삽입 모드로 전환
  2. 필요한 환경 변수와 값을 입력
  3. 작성을 완료한 후, ESC 키를 눌러 명령 모드로 전환
  4. :wq를 입력하고 Enter를 눌러 저장하고 vim을 종료

6. Docker Compose로 애플리케이션 실행하기


6.1 Docker Compose 실행

프로젝트 디렉토리에서 다음 명령어로 애플리케이션을 실행합니다:

docker-compose.override.yml 파일이 있는 경우:

docker compose -f docker-compose.yml up --build -d

docker-compose.yml 파일만 있는 경우:

docker compose up --build -d

참고: -d 옵션은 백그라운드에서 컨테이너를 실행합니다. --build 옵션은 컨테이너를 시작하기 전에 이미지를 다시 빌드합니다.

Docker Compose가 실행되면 다음과 같이 빌드 과정이 진행됩니다:

Docker Compose 빌드 중


6.2 컨테이너 상태 확인

실행 중인 컨테이너 목록을 확인합니다:

docker ps

컨테이너 로그를 확인하려면:

docker logs [컨테이너ID 또는 이름]

7. 문제 해결


7.1 Docker 권한 문제

"Permission denied" 오류가 발생하면 다음 명령어를 실행해보세요:

sudo chmod 666 /var/run/docker.sock

7.2 포트 충돌 문제

포트가 이미 사용 중인 경우, 실행 중인 프로세스를 확인합니다:

sudo lsof -i :[포트번호]

7.3 NVIDIA Docker 관련 문제

NVIDIA Container Toolkit으로 문제가 발생한다면, 앞서 설명한 대체 방법인 nvidia-docker2 설치를 시도해보세요. 두 방법 모두 시도했지만 문제가 해결되지 않는 경우, 다음을 확인하세요:

  1. 최신 NVIDIA 드라이버가 설치되어 있는지 확인
  2. Docker 버전 호환성 확인
  3. CUDA 버전과 이미지 태그의 일치 여부 확인

8. 추가 설정 (선택사항)


8.1 방화벽 설정

필요한 포트를 개방하려면:

sudo ufw allow [포트번호]

8.2 자동 시작 설정

서버 재부팅 시 Docker 서비스가 자동으로 시작되도록 설정:

sudo systemctl enable docker

마치며

이제 카카오 클라우드 GPU 서버에서 Docker와 NVIDIA Container Toolkit을 사용하여 GPU 애플리케이션을 실행할 준비가 완료되었습니다. 이 가이드가 GPU 기반 프로젝트를 설정하는 데 도움이 되었기를 바랍니다.

질문이나 문제가 있으면 언제든지 댓글로 남겨주세요!

반응형