Docker ?
Docker는 컨테이너화를 사용하는 오픈 소스 플랫폼으로,
애플리케이션을 가볍고, 격리된 환경인 컨테이너 내에서 실행할 수 있게 해줍니다.
컨테이너는 운영 체제(OS) 레벨의 가상화를 제공하며,
각 컨테이너는 별도의 파일 시스템을 갖고,
공유된 OS 커널을 사용하면서도 다른 컨테이너와 격리됩니다.
컨테이너는 애플리케이션의 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 필요한 모든 것을 패키지로 묶습니다.
이는 애플리케이션을 다양한 환경에서 일관되게 실행할 수 있게 해줍니다.
즉, docker를 사용하는 것은 하나의 완성된 가상환경 패키지를 내려받는 것이라 보시면 될 것 같습니다.
Docker의 주요 장점
docker container 는 애플리케이션과 그 종속성을 완전히 포함하므로, 다른 환경에서도 동일하게 작동합니다.
각 컨테이너는 서로 격리되어 있어, 하나의 컨테이너가 다른 컨테이너나 호스트 시스템에 영향을 주지 않습니다.
Docker 설치
ubuntu에서 docker 설치 과정을 수행하도록 하겠습니다.
아래는 공식 문서입니다.
아래 명령어를 수행하여 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도 설치하겠습니다.
아래는 공식 문서입니다.
먼저 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는 실행이 불가합니다.
'Setup & Example > Linux' 카테고리의 다른 글
Ubuntu 22.04 에 Intel RealSense Viewer 설치 (1) | 2024.01.10 |
---|---|
Linux(Ubuntu 22.04) conda 가상 환경에서 CUDA 를 위한 OpenCV, PyTorch, Torchvision 빌드 (1) | 2024.01.10 |
Ubuntu 22.04 에서 CUDA 업그레이드 + cuDNN 설치 (0) | 2024.01.09 |
Jetson Nano 에 yolov7 TensorRT 사전 환경 구성 (1) | 2023.12.26 |
Window WSL 설치 + VS code 연동 (1) | 2023.12.23 |