Setup & Example/Linux

docker 설치 + NVIDIA docker 설치 + docker 사용법

코방코 2024. 1. 15. 11:40
728x90

 

 

Docker ?

 

Docker는 컨테이너화를 사용하는 오픈 소스 플랫폼으로,

애플리케이션을 가볍고, 격리된 환경인 컨테이너 내에서 실행할 수 있게 해줍니다.

 

컨테이너는 운영 체제(OS) 레벨의 가상화를 제공하며,

각 컨테이너는 별도의 파일 시스템을 갖고,

공유된 OS 커널을 사용하면서도 다른 컨테이너와 격리됩니다.

 

컨테이너는 애플리케이션의 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 필요한 모든 것을 패키지로 묶습니다.

이는 애플리케이션을 다양한 환경에서 일관되게 실행할 수 있게 해줍니다.

 

즉, docker를 사용하는 것은 하나의 완성된 가상환경 패키지를 내려받는 것이라 보시면 될 것 같습니다.

 


Docker의 주요 장점

 

docker container 는 애플리케이션과 그 종속성을 완전히 포함하므로, 다른 환경에서도 동일하게 작동합니다.

각 컨테이너는 서로 격리되어 있어, 하나의 컨테이너가 다른 컨테이너나 호스트 시스템에 영향을 주지 않습니다.

 


Docker 설치 

 

ubuntu에서 docker 설치 과정을 수행하도록 하겠습니다.

아래는 공식 문서입니다.

 

Install Docker Engine on Ubuntu

Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.

docs.docker.com

 

아래 명령어를 수행하여 docker를 설치해줍니다.

sudo apt get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io

sudo usermod -a -G docker $USER

 

이제 reboot를 해줍니다.

sudo reboot

 

docker가 정상적으로 설치되었는지 테스트합니다.

sudo docker run hello-world

 

Hello from Docker라네요. 성공적으로 설치가 되었습니다.

 


NVIDIA Docker 설치 

 

저는 Nvidia GPU에 최적화된 docker가 필요해서

Nvidia docker도 설치하겠습니다.

아래는 공식 문서입니다.

 

Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit 1.14.3 documentation

© Copyright 2020-2023, NVIDIA. Last updated on Dec 11, 2023.

docs.nvidia.com

 

먼저 Nvidia Container Toolkit부터 설치합니다.

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/stable/deb/nvidia-container-toolkit.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 sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt-get update

sudo apt-get install -y nvidia-container-toolkit

 

이제 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

sudo apt-get update

sudo apt-get install -y nvidia-docker2

sudo systemctl restart docker

 

테스트를 위해 ubuntu 20.04에 cuda 11.0.3 인 docker 환경을 만들어봅니다.

--rm 을 사용하여 생성되고나서 즉시 다시 삭제됩니다.

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

 

여기서 문제없이 GPU 에 대한 정보가 나타나면 성공입니다.

 


간단한 Docker 사용법

 

앞으로 docker 환경을 만들고 들어가서 계속 실행을 해야할테니 해당 방법을 연습해보겠습니다.

일단 다시 만드는데 이번엔 대화형 커널로 만들겠습니다.

docker 이름은 my_cuda_container 입니다.

docker run -it --gpus all --name my_cuda_container nvidia/cuda:11.0.3-base-ubuntu20.04 bash

 

그럼 아래와 같이 대화형 커널이 터미널에 열리게 됩니다.

 

cat /etc/os-release 명령을 쳐서 os를 확인해보면 20.04가 설치되어 있는 것을 확인할 수 있습니다.

 

이번엔 종료하고 다시 열어서 해보겠습니다.

기존 터미널에서 명령을 입력하면 docker가 없다는 에러가 발생합니다.

docker는 host 시스템에서 명령해서 종료를 해야합니다.

 

새 터미널을 열고 아래 명령을 입력하면 위 그림처럼 자동으로 docker 환경이 중단됩니다.

# 종료
docker stop my_cuda_container

 

그럼 이제 다시 실행해보겠습니다.

docker start my_cuda_container

docker exec -it my_cuda_container bash

 

docker 터미널이 다시 열리게 됩니다.

그럼 이제 테스트를 완료했으니 container를 삭제해보겠습니다.

# 종료
docker stop my_cuda_container

# 삭제
docker rm my_cuda_container

삭제를 하고나면 더 이상 해당 container는 실행이 불가합니다.

 

 

 

728x90
반응형