1. Docker Container 설치 (일반설치)
1) 업데이트 및 HTTP 패키지 설치
$ sudo apt update
$ sudo apt-get install -y ca-certificates \
curl \
software-properties-common \
apt-transport-https \
gnupg-agent \
lsb-release
2) GPG 및 저장소 추가
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# key 찾아서 설치해 줌
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys (NO_PUBKEY,ex.) A4B469963BF863CC)
# key 설치 확인
$ sudo apt-key fingerprint
# Repository 설치
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
3) 도커 엔진 설치
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
2. Container 생성
- Docker 위에 올릴 Container 생성하기
- Container의 경우, Host OS와 격리되어 있기 때문에 Host OS의 GPU 사용 불가함. 그래서 nvidia-docker를 통해 연결함.
(Infra -> Host OS -> Docker -> Container 구조)
1) Nvidia Docker 설치
- Prerequisite: Nvidia Driver가 미리 설치되어 있어야 함
$ 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 tee /etc/apt/sources.list.d/nvidia-docker.list
$ sudo apt-get install -y nvidia-container-toolkit
$ sudo systemctl restart docker
$ sudo apt-get update
2) Pytorch Container 생성
# Pytorch 이미지 찾아보기
# STARS의 숫자가 가장 높은 것이 범용적인 것
$ docker search pytorch
# Pytorch 이미지 다운로드
# 아래 명령어는 dockerhub 사이트에서 pytorch 검색 시 나와 있음
$ docker pull pytorch/pytorch
# Docker 이미지 확인
$ docker images
3) Nvidia-docker와 Pytorch Container 연동
- Pytorch Container (--name pytorch)를 pytorch/pytorch라는 이미지로 사용 선언
- 내 컴퓨터의 share 폴더는 pytorch 컨테이너의 share 폴더와 공유됨
# User 디렉토리 아래에 Share 폴더 미리 생성 필요
# '-v' 옵션은 user/share 폴더에 있는 파일들을 pytorch 컨테이너의 share 폴더와 공유한다는 의미임.
# '-p' 옵션은 내 컴퓨터의 8888 포트와 pytorch 컨테이너의 8888 포트를 연결해 준다는 의미임
$ docker run -itd --name pytorch -v /home/(user_dic)/share:/root/share -p 8888:8888 --gpus all --restart=always pytorch/pytorch
# Ref.
# 1) Container list 확인
$ docker ps -a
# 2) Background에서 실행되는 Docker 종료
$ sudo docker systemctl restart docker
# 3) Restart 시
# 3-1) '--restart=always' 옵션주는 경우
$ docker exec -it pytorch bash
# 3-2) '--restart=always' 옵션없는 경우, pytorch containet 시작 후 다시 실행
$ docker start pytorch
$ docker exec -it pytorch bash
3-1) 상기 명령어 Error 해결
- docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
$ 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 tee /etc/apt/sources.list.d/nvidia-docker.list
$ sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
# docker 재시작
$ sudo systemcrl restart docker
https://bluecolorsky.tistory.com/110
[정보] docker: Error response from daemon: could not select device driver with capabilities: [[gpu]] 문제 해결하기
도커를 사용하다 보면 다양한 문제에 맞닥뜨리게 된다. 해결하기 쉬운 문제부터 어려운 문제까지 수많은 문제들이 존재하는데 사용할때마다 항상 다른 오류가 발생하여 문제가 발생할때마다
bluecolorsky.tistory.com
3-2) 3-1) 실행 후 Error 해결:
-docker: Error response from daemon: Conflict. The container name "/pytorch" is already in use by container "de99d604f2ddde3f0168a37d29291bb5ae1b852e9f140967b66d5c3a115b0b96". You have to remove (or rename) that container to be able to reuse that name.
- 아래 명령어 통해 pytorch container 삭제
$ sudo rm pytorch
4) Pytorch Container 실행
$ docker exec -it pytorch bash
5) GPU 동작 확인 (링크 참조)
6) 추가 패키지 설치 (Jupyter)
7) Jupyter Notebook 실행
$ jupyter notebook --ip=0.0.0.0 --port=8888 --allow-root
- Jupyter Notbook의 토큰 인증
https://financedata.github.io/posts/jupyter-notebook-authentication.html
Tip
다른 사람의 코드를 다운 받아 사용할 때는 Pytorch 컨터이너의 share 폴더에서 git으로 다운 받아 쓰면 됨.
8) 배포하기
1단계: 현 실행 중인 Container 확인
$ docker ps -a
2단계: 배포할 Contrainer 중단
$ docker stop pytorch
3단계: 배포할 Container를 Image 파일로 만들기
# 이미지 파일 이름 및 배포 버젼 저장
$ docker commit pytorch pytorch_distribution_test:1
# 이미지 목록 확인
$ docker image ls 혹은 docker images
4단계: Docker Hub에 로그인
# docker hub 사이트에 미리 가입 필요함
# docker hub 사이트에서 가입한 ID/PW 입력
$ docker login
5단계: 배포 및 확인
$ docker push (Docker Hub ID)/pytorch_distribution_test:1
Docker hub 사이트에 접속해서 Repository 확인
Tip. (Pytorch) Docker 컨테이너에서 아나콘다 가상환경을 만들 필요 없는 이유
- Pytorch는 Anaconda Package를 제공하므로, Pytorch 이미지에 Anaconda가 기 존재함
참고:
1. https://dongle94.github.io/docker/docker-ubuntu-install/
[Docker] Ubuntu에 Docker 설치하기
리눅스 OS 중 우분투 OS에서 도커(Docker) 프로그램을 설치하는 방법을 알아본다.
dongle94.github.io
2. https://89douner.tistory.com/96
6-2. Docker에서 pytorch 환경 구축하기 with jupyter notebook
안녕하세요~ 이번에는 리눅스 환경에서 Docker를 이용하여 pytorch를 구축하려고해요! (윈도우 환경에서는 GPU docker가 제공이 안되요 ㅜㅜ) (명령어 입력은 아래 사이트를 참고하고 복붙하시면될거
89douner.tistory.com
cf.)
1) apt 와 apt-get 차이
https://ksbgenius.github.io/linux/2021/01/13/apt-apt-get-difference.html
[Linux] apt와 apt-get 차이점
데비안 계열(Ubuntu, Mint 등)에서 사용하는 apt와 apt-get의 차이점
ksbgenius.github.io
2) curl (Client url): 프로토콜을 이용해 URL로 데이터를 전송하여 서버에 데이터를 보내거나 가져올 때 사용하기 위한 명령줄 도구 및 라이브러리
3) echo: 문자열을 컴퓨터 터미널에 출력하는 명령
'Programming' 카테고리의 다른 글
Jupyter Notebook에서 D드라이브 접속하는 방법 (0) | 2023.03.13 |
---|---|
우분투(Ubuntu)에서 GPU 사용 설정 - Pytorch 사용 (0) | 2023.01.06 |
Docker Container의 장점 및 기능: 독립 환경 구성 (0) | 2022.12.06 |
Optimization: MLE, MRT, DSL (0) | 2022.11.18 |
Tensorflow와 Pytorch 차이 (0) | 2022.10.23 |