새소식

Docker

[Docker] Docker 컨테이너를 활용한 딥 러닝 개발 환경 만들기

  • -

Docker는 여러 버전의 리눅스 이미지를 활용할 수 있기 때문에 CUDA 버전 관리가 용이합니다. 오늘은 Docker를 사용하여 딥러닝 개발환경을 만드는 방법을 포스팅해 봤습니다.

 

Docker 설치

Docker를 사용하기 전에 Docker 및 Nvidia-Docker2 설치를 해야 합니다. Nvidia-Docker2는 Docker 자체에서는 GPU에 접속할 수 없기 때문에 이를 연결해주는 Nvidia의 오픈소스 패키지 입니다. 설치 방법은 아래를 참고해주세요.

 

https://donghyun99.tistory.com/3

 

[Docker] Docker 설치하기

Docker는 컨테이너 기반 오픈소스 가상화 플랫폼입니다. 오늘은 Docker 설치 방법에 대해 정리해 봤습니다. Docker 설치 도커는 리눅스 종류와 상관없이 설치가 가능합니다. 배포된 리눅스 종류를 자

donghyun99.tistory.com

 

CUDA 이미지 Pull

Docker hub에는 각종 Docker 이미지들을 검색할 수 있습니다. 필요한 Docker 이미지를 찾으면 명령어를 복사하여 터미널에 입력하여 이미지를 다운받을 수 있습니다. Nvidia에서는 Nvidia/CUDA 라는 Docker 이미지를 공식적으로 지원합니다.

 

https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

Deliver your business through Docker Hub Package and publish apps and plugins as containers in Docker Hub for easy download and deployment by millions of Docker users worldwide.

hub.docker.com

 

Docker 이미지는 <Image_name> [:<tag>] 와 같은 형식으로 형상관리를 합니다. 예를들어 nvidia/cuda는 이미지의 name, 11.8.0-base-ubuntu22.04는 tag입니다. 다운로드 받을 경우 nvidia/cuda:11.8.0-base-ubuntu22.04라는 이미지를 불러올 수 있습니다.

 

nvidia/cuda는 각 버전마다 base, runtime, devel로 나눠집니다. 각각에 대한 Nvidia의 공식 description은 다음과 같습니다.

용량의 크기가 base < runtime < devel 순입니다. nvcc 명령어가 devel부터 동작해서 저는 devel을 다운받아 도커 컨테이너를 구축하였습니다.

 

nvidia/cuda:11.8.0-devel-ubuntu22.04를 가져와 보겠습니다. Tags를 클릭해 버전 목록을 확인하세요

 

우측의 복사 버튼을 클릭해 pull 명령어를 복사하고 터미널에 입력합니다.

 

Docker Container 설치

docker-images 명령어로 확인해보면 이미지가 저장되어있습니다.

다음 명령어로 image를 컨테이너에 설치 할 수 있습니다.

docker run -it -p <server_port>:<container_port> --gpus all --name <container_name> <image_name>
  • -d: detached mode, -i: interactive mode(표준 입력 활성화), -t: tty mode(bash 사용)
  • -p: server port와 container port를 바인딩(포트포워딩) 해줌
  • --gpus: gpu 허용을 관리함. --gpus "device=0" 이런식으로 CUDA에서 사용하듯이 사용가능. all은 전체 허용.
  • --name: 컨테이너 이름을 지정할 수 있음. container 이름 image 이름 순으로 입력.

docker ps 명령어로 설치된 컨테이너 목록을 확인합니다.

다음 명령어로 도커 컨테이너에 접속할 수 있습니다.

docker exec -it <container_name> bash

nvidia-smi 명령어를 통해 GPU 접속이 가능한지 확인합니다.

 

기본 패키지 설정

 

docker container에는 기본 패키지가 설치되어있지 않기 때문에 사용하기 불편합니다. 기본 패키지를 설치해야 합니다.

 

sed -i 's/archive.ubuntu.com/ftp.daumkakao.com/g' /etc/apt/sources.list
apt-get update 
apt-get dist-upgrade -y
apt-get install -y python3-virtualenv wget vim git gcc build-essential sudo net-tools openssh-server curl python3-pip
apt-get install unixodbc-dev
pip3 install -U pip
pip3 install -U setuptools

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.