Docker는 여러 버전의 리눅스 이미지를 활용할 수 있기 때문에 CUDA 버전 관리가 용이합니다. 오늘은 Docker를 사용하여 딥러닝 개발환경을 만드는 방법을 포스팅해 봤습니다.
Docker 설치
Docker를 사용하기 전에 Docker 및 Nvidia-Docker2 설치를 해야 합니다. Nvidia-Docker2는 Docker 자체에서는 GPU에 접속할 수 없기 때문에 이를 연결해주는 Nvidia의 오픈소스 패키지 입니다. 설치 방법은 아래를 참고해주세요.
https://donghyun99.tistory.com/3
CUDA 이미지 Pull
Docker hub에는 각종 Docker 이미지들을 검색할 수 있습니다. 필요한 Docker 이미지를 찾으면 명령어를 복사하여 터미널에 입력하여 이미지를 다운받을 수 있습니다. Nvidia에서는 Nvidia/CUDA 라는 Docker 이미지를 공식적으로 지원합니다.
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
'Docker' 카테고리의 다른 글
[Docker] docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]]. 오류 (0) | 2023.05.04 |
---|---|
[Docker] 명령어 모음 (0) | 2023.01.29 |
[Docker] Docker 설치하기 (0) | 2023.01.27 |