안녕하세요
오늘은 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 접속하기
다음 사이트에 접속을 하여서 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 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 |
---|
댓글