PC환경
CPU : AMD® Epyc 7713p 64-core processor × 128
VGA : RTX 4090 24GB 4EA
Memory : 251GB
OS : Ubuntu 20.04
Docker에서 pytorch 2.2.0 & cuda11.8 & cudnn8 환경을 세팅
curl -fsSL https://get.docker.com/ | sudo sh
sudo usermod -aG docker $USER
sudo reboot
Docker hub에 접속해서 원하는 image를 다운 받는다.
https://hub.docker.com/r/pytorch/pytorch/tags
docker pull pytorch/pytorch:2.2.0-cuda11.8-cudnn8-devel
#docker 확인
docker images
#docker 삭제
docker rmi [image_id]
#TAG 변경
docker tag pytorch/pytorch:2.2.0-cuda11.8-cudnn8-devel torch2.2.0:cuda11.8-cudnn8
docker run -it --gpus=all --name [container-name] torch2.2.0:cuda11.8-cudnn8 /bin/bash
# 실행
docker start [container-name]
# 접속
docker attach [container-name]
# 탈출 (-it 옵션을 줬을때만 가능)
ctrl+P
ctrl+Q
# 종료
exit
# 삭제
docker rm [container-name]
Docker를 사용하게 되면 volume에 파일들이 저장되고, 컴퓨터의 하드디스크에 직접 파일이 저장되는 상태로 사용하고 싶어서 workspace에 컴퓨터 파일시스템을 직접 마운트해서 사용하고자 한다. 원하는 경로를 마운트 하는 상태로 container를 생성하기 위해서는 다음과 같은 명령어를 입력하면 된다. [filepath]에 원하는 경로를 입력하여 워크스페이스와 파일 시스템 경로를 연결할 수 있다.
docker run -it --gpus all --name [container-name] -v [filepath]:/workspace/[container-name] torch171:cuda11.0
도커는 기본적으로 설치하면 /var/lib/docker로 기본 패스가 설정되어 docker 이미지나 컨테이너 생성시 해당 위치를 사용하게 된다.
하지만 일반적으로 /var가 속한 파티션은 크기가 크지 않아 많은 도커를 운용할 때 디스크 용량 문제에 부딛히게 된다.
여기서는 /home/docker 패스에 1T SSD를 마운트 하여 도커 전용으로 사용하기 위해 /var/lib/docker기본 패스를 변경하여 /home/docker/docker_data에서 이미지와 컨테이너 데이터를 관리하도록 변경한다
mkdir -p /home/docker/docker_data
vi /etc/docker/daemon.json
아래 내용 입력
{
"graph":"/home/docker/docker_data",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
입력 후, 도커 데몬 재시작
systemctl restart docker.service
systemctl status docker.service
설치된 도커와 base path 변경된 것 확인
portainer는 Docker의 Image, Container, Network 등을 쉽게 관리하도록 도와주는 Graphic User Interface Web Service이다. 쉽게 말해 window의 docker desktop처럼 GUI로 docker 컨테이너 등을 관리한다고 보면 된다.
먼저 Protainer Container를 설치하기 전에 Container와 Host(Ubuntu OS)간에 Volume Matcing을 위한 Directory 생성하자.
sudo mkdir -p /docker/portainer
# / 경로로 이동
cd /
# 폴더 만들어졌는지 확인
ls -al
루트 Directory [ / ] 밑에 docker라는 Directory를 만들고, 그 밑에 다시 portainer라는 Directory를 만들어 주었다.
sudo docker run --name portainer -p 9000:9000 -d --restart always -v /docker/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
옵션 설명
🔹 --name : Container Name 생성
🔹-p Host Port 9000번과 내부 Port 9000번 Mapping
🔹 -d Deamon을 Background에서 실행
🔹 -restart always : 재 부팅시 자동 기동
🔹/docker/potainer:/data -v : Host와 Container 간의 Volume Matcing
🔹.docker.sock : Host와 Container 간의 공유를 위한 명령어
🔹portainer/portainer : Image 사용 순서 지정
🔹 컨테이너 목록: docker ps
Ubuntu의 IP (ifconfig 명령으로 확인)를 입력한 뒤 :9000을 인터넷 주소 창에 입력
그 후, local로 보면
Portainer 설치 및 구동 완료.
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
발생 시, nvidia-container-toolkit을 설치
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 tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
systemctl restart docker.service
그 후,
docker run -itd --gpus=all --name [이름] [IMAGE 명] /bin/bash
#example
docker run -itd --gpus=all --name ywlee torch2.2.0:cuda11.8-cudnn8 /bin/bash