본문 바로가기
Docker/Docker for Linux

[Linux Server] Docker 튜토리얼1 (Ubuntu server22.04.03 LTS 에서 pytorch(cuda11) 컨테이너 만들기.)

by pulluper 2023. 8. 1.
반응형

안녕하세요 

오늘은 docker에 대하여 알아보겠습니다. 

 

현재 상태는 다음과 같습니다. 

개인 PC(window, ubuntu, mac) 등에서 

Server (ubuntu)에서 server의 자원(cpu, gpu) 를 이용하여 학습등을 진행합니다. 

 

여태까지는 conda 등을 이용해서 관리를 하였는데, 

docker를 이용해서 이미지만 받게 된다면,

서버에는 드라이브만 필요하고 

각 프로젝트의 cuda, cudnn, 각종 라이브러리등 필요한 것들을 한번에 사용 할 수 있습니다. 

 

이는 협업시 혹은 재구현시 그 환경을 쉽고 편하게 가져 올 수 있는 장점이 있습니다. 

이를 위해서 docker 에 대하여 알아보고 튜토리얼을 진행 해 보겠습니다. 


Ubuntu server (22.04.03 LTS)

 

먼저 우분투 서버에 docker 를 설치 합니다. 

우분투 서버는 CLI 환경이기 때문에 docker engine 을 설치 합니다. 

설치 방법은 다음과 같습니다. (2023.08월기준)

https://docs.docker.com/engine/install/ubuntu/

 

첫 설치 


+ 2024.01.22 추가

0. 관리자 권한으로 시작해 주셔야 하는 경우도 있습니다! 

sudo su

 

1. 도커 리포 설정

 

    1-1. 패키지 업데이트 및 설치

 

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

 

    1-2. 도커 오피셜 GPG 키 추가

 

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

 

    1-3. 리포 설정

 

 echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

2. 도커 엔진 설치

 

    2-1. 패키지 인덱스 업데이트

 

sudo apt-get update

 

    2-2. 최신버전 설치 

 

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

 

    2-3. 확인

 

sudo docker run hello-world

 

다음과 같이 나오면 성공


3. 도커 권한설정 

 

sudo usermod -aG docker $USER # 현재접속유저 (pulluper)

sudo usermod -aG docker pulluper

 

후 한번 재부팅

 

sudo reboot

4. Nvidia Toolkit 설치 

 

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
  && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.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

 

sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker

sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi

5. Docker Image download

 

이 포스팅에서는 도커 이미지를 다운로드 받아서 실행 하는 것 까지가 목표입니다. 

자신에게 맞는 도커 이미지를 다운로드 하는 과정입니다. 


    5-1. Docker hub 접속하기 

 

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

다음 사이트에 접속을 하여서 pytorch/pytorch 를 검색하여 가장 위에 나오는 docker image를 pull 해 보겠습니다. 

 

tag에 cuda11.3을 사용하여 나오는 1.12.1-cuda11.3-cudnn8-dlevel을 이용해 보겠습니다. 


    5-2. 도커 이미지 풀

 

다음 명령어로 찾은 도커 이미지를 풀 해줍니다. 

 

docker pull pytorch/pytorch:1.12.1-cuda11.3-cudnn8-devel

 

 

다음 명령어로 이미지가 잘 받아졌나 확인 해 줍니다. 

 

docker images

 


    5-3. 도커 컨테이너 생성하기

 

docker run [옵션] [이미지 이름] [실행할 파일]

 

받은 이미지 이름을 및 아래 옵션들을 넣어서 컨테이너를 생성합니다. 

옵션들은 다음 포스팅에 잘 설명 되어있습니다. 

https://wooono.tistory.com/348

 

[Docker] Docker run 옵션 종류

Docker run 명령어 기본 구조 docker run 은 Image 로 Container 를 생성하는 명령어입니다. docker run docker run -d -it --name containername imagename bash Docker run 옵션 종류 -i, --interactive 표준 입력(stdin)을 활성화하며,

wooono.tistory.com

 

 

docker run -it --gpus all --name pulluper pytorch/pytorch:1.12.1-cuda11.3-cudnn8-devel /bin/bash

 

 

이제 도커 생성과 함께 컨테이너 실행이 됩니다.

이제 도커 컨테이터의 안에서의 환경을 확인해 볼까요?

 

[nvcc -V 로 cuda version  확인]

 

nvcc -V

 

 

[cudnn  확인]

 

cat /usr/include/x86_64-linux-gnu/cudnn_v*.h | grep CUDNN_MAJOR -A 2

 

 

[pytorch version 확인]

 

python

import torch
torch.__version__

 

 

이는 저희가 받은 pytorch/pytorch:1.12.1-cuda11.3-cudnn8-devel 와 환경이 같음을 알 수 있네요 :)


    5-4. 도커 컨테이너 나가기 or  컨테이너 죽이지 않고 나가기

 

[도커 컨테이너 나가기]

 

exit

 

or

 

[컨테이너 띄운 상태로 나가기]

 

[ctrl] + [p] + [q] 누르기


    5-5. 도커 컨테이너 재접속

 

이제 다음 명령어로 실행하는 컨테이너들을 볼 수 있습니다. 

 

docker ps -a

 

 

docker start pulluper
docker attach pulluper

 

 

or 

 

docker exec -it plluper bash

 


튜토리얼 끝~ 

 

다음에는 IDE에 연결하는 것을 배워보겠습니다 :)

반응형

'Docker > Docker for Linux' 카테고리의 다른 글

[Docker] Linux docker 환경에서 a1111 실행해 보기  (0) 2023.08.30

댓글