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
실행 결과는 다음과 같이 나타납니다:
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
다음과 같이 버전 정보가 표시되면 성공적으로 설치된 것입니다:
5. 프로젝트 클론 및 설정
5.1 Git 저장소 클론
프로젝트 코드를 서버에 가져오기 위해 Git 저장소를 클론합니다:
git clone [git 주소]
중요:
[git 주소]
부분에는 실제 프로젝트의 Git 저장소 주소를 입력해야 합니다.
Password 입력 창이 나타나면 GitHub 비밀번호가 아닌 개인 액세스 토큰(Personal Access Token)을 입력해야 합니다. GitHub에서 토큰을 발급받은 후 사용하세요.
5.2 환경 설정 파일 생성
프로젝트 폴더로 이동한 후, 필요한 환경 설정 파일을 생성합니다:
.env
파일은 보안상의 이유로 Git에 포함되지 않는 경우가 많습니다. 따라서 직접 생성해야 합니다:
vim .env
vim 편집기에서 .env
파일 내용을 작성하는 방법:
i
키를 눌러 삽입 모드로 전환- 필요한 환경 변수와 값을 입력
- 작성을 완료한 후,
ESC
키를 눌러 명령 모드로 전환 :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가 실행되면 다음과 같이 빌드 과정이 진행됩니다:
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 설치를 시도해보세요. 두 방법 모두 시도했지만 문제가 해결되지 않는 경우, 다음을 확인하세요:
- 최신 NVIDIA 드라이버가 설치되어 있는지 확인
- Docker 버전 호환성 확인
- CUDA 버전과 이미지 태그의 일치 여부 확인
8. 추가 설정 (선택사항)
8.1 방화벽 설정
필요한 포트를 개방하려면:
sudo ufw allow [포트번호]
8.2 자동 시작 설정
서버 재부팅 시 Docker 서비스가 자동으로 시작되도록 설정:
sudo systemctl enable docker
마치며
이제 카카오 클라우드 GPU 서버에서 Docker와 NVIDIA Container Toolkit을 사용하여 GPU 애플리케이션을 실행할 준비가 완료되었습니다. 이 가이드가 GPU 기반 프로젝트를 설정하는 데 도움이 되었기를 바랍니다.
질문이나 문제가 있으면 언제든지 댓글로 남겨주세요!