(주의) 전문가가 아닌 단순히 linux가 필요해
필요한 내용만 공부하였기에 내용이 부실하고 부정확할 수 있습니다.
[ 참고 사이트 ]
(김도윤님 Notion) ubuntu-Docker
https://ddoyun.notion.site/ddoyun/ubuntu-Docker-438f602ff54449368ff3eff8c35fb1be
테디 노트
https://teddylee777.github.io/categories/linux/
먼저 그림을 한번 보시고 읽고난 뒤 다시 그림을 보시면 이해하는데 도움이 될것입니다. :)
1. 이미 잘 구성되어 있는 Image 불러와 Container 생성하기.
- 직접 Image를 생성하여 저장해두는 것도 가능하지만, 비전공자인 저에게는 어려워 제가 필요한 프로그램들로 이루어진 이미 잘 만들어진 Image를 불러와 Container를 생성하는 방법입니다. (저는 Kaggle Image라는 이미지를 사용하였습니다.)
- 원리는 내 컴퓨터에 있는 Image를 선택해 Container화 하는 것이는데 이 과정에서 내 컴퓨터에 그 해당하는 Image가 없고 + Image Hub라는 곳에 그 Image가 있다면, 그 Image를 Image Hub라는 곳으로부터 자동으로 다운받아지면서 Container까지 생성됩니다.
1-1 Docker Hub에 이미지가 존재하는 경우
# create container
# 사용할 이미지가 docker hub에 존재하면 미리 이미지를 pull하지 않아도 자동으로 가져옵니다.
sudo docker run --rm -itd -p 8888:8888 -v \ # 로컬 포트 주소값:컨테이너 포트 주소값 / 여러개 생성시 좌변의 숫자를 바꿔가며 생성하시면 됩니다.
/media/com/aaa/folder:/cont \ # 로컬 경로:컨테이너 경로
--name laoon \ # 컨테이너 이름
teddylee777/docker-kaggle-ko # 이미지 이름
# Option 설명
-itd : -it와 -d의 기능이 다름. 근데 같이 씀 (it는 tty, d는 background?)
-p : 로컬의 포트와 컨테이너의 포트를 매칭
-v : 로컬의 경로와 컨테이너의 경로를 매칭
1-2 Docker Hub에 이미지가 존재하지 않는 경우
아래의 코드를 실행한 후 위 1-1코드를 실행하시면 됩니다.
# pull image(docker hub에 image가 없는 경우)
# gpu image
git clone https://github.com/teddylee777/docker-kaggle-ko.git
cd docker-kaggle-ko
sudo docker build -t teddylee777/docker-kaggle-ko:latest
# cpu image
sudo docker build -f cpu.Dockerfile -t teddylee777/docker-kaggle-ko-cpu:latest
# 1-1 Code 실행
2. CUDA-toolkits, cuDNN, tensorflow-gpu Install
- 여기서는 불러온 Image에 자신이 필요한 프로그램을 추가로 설치하는 방법입니다.
- 저의 경우 CUDA-toolkits 11.2.0 ver, cuDNN 8.1.0.77 ver, tensorflow-gpu 2.5.0 ver 이 3개를 추가로 설치하였습니다.
- Version을 이렇게 선택한 이유는 제가 설치한 Nvidia 460 version과 호환되는 version이기 때문입니다.
- (주의) 이 추가 설치 프로그램의 경우 OS에 설치하는 것이 아닌, docker의 Container에 설치하는 것입니다!!
2-1 Container 접속
# 컨테이너 접속
sudo docker exec -it {container id} /bin/bash
2-2 CUDA-toolkits 11.2.0 Install
# cuda-toolkits (version 11.2.0)
# 참고 web site : https://webnautes.tistory.com/1479
# 기존 cuda 삭제
rm -rf /usr/local/cuda*
# ~/.bashrc 또는 /etc/profile에 추가되있는 CUDA 관련 설정 제거
export PATH=$PATH:/usr/local/cuda-11.0/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.0/lib64
export CUDADIR=/usr/local/cuda-11.0
# CUDA 11.2 설치
# https://developer.nvidia.com/cuda-toolkit-archive에서 필요한 설정 입력하면 아래의 코드 출력.
wget https://developer.download.nvidia.com/compute/cuda/11.2.0/local_installers/cuda_11.2.0_460.27.04_linux.run
sh cuda_11.2.0_460.27.04_linux.run
# 설치화면 상황 설명
# Existing package manager ~ -> continue 선택
# 에러 발생 시 "Failed to verify gcc version. See log at /var/log/cuda-installer.log for details." 문구 뜸
# Do you accept the above EULA? -> accept 입력
# Driver 항목 체크박스 해제(스페이스바)하고 Install 항목에서 선택(엔터)
# 문제없이 설치되면 "Summary" ~ -> 라고 뜸
# CUDA toolkit 관련설정 환경변수에 추가 및 적용
sh -c "echo 'export PATH=$PATH:/usr/local/cuda-11.2/bin' >> /etc/profile"
sh -c "echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.2/lib64' >> /etc/profile"
sh -c "echo 'export CUDADIR=/usr/local/cuda-11.2' >> /etc/profile"
source /etc/profile
# 설치 확인
nvcc -V
2-3 cuDNN 8.1.0.77 Install
# 설치 가능 버전 확인
conda search cudnn
# cuDNN 8.1.0.77 버전 설치
conda install cudnn==8.1.0.77
2-4 Tensorflow-gpu 2.5.0 Install
# tensorflow-gpu 2.5.0 버전
pip install tensorflow-gpu==2.5.0
3. Commit
- 이 과정은 추가설치한 프로그램을 Image화 시키는 것으로 그 이유는 매번 설치하지 않기 위해서 입니다.
- 즉, 제가 불러온 Kaggle Image를 Container화 시키고 그 안에 프로그램을 추가하여 새로운 Image화 하는 것입니다.
- New Image = [Kaggle Image + (CUDA, cuDNN, Tensorflow-gpu)]
# 현재 존재하는 Images
docker images
# Container commit (새로운 이미지 생성)
# 위 새로운 프로그램을 설치한 Container를 새로운 Image로 저장합니다.
docker commit {컨테이너 id} {새로 지정할 image id}
# 현재 존재하는 Images - Image가 추가되었는지 확인합니다.
docker images
'Linux' 카테고리의 다른 글
(Linux) Ubuntu 18.04 Docker & NVIDIA-docker 설치 (0) | 2021.07.26 |
---|---|
(Linux) Ubuntu 18.04 NVIDIA driver 설치 (0) | 2021.07.16 |
(Linux) Ubuntu 18.04 YouTube 재생 오류 (0) | 2021.07.16 |
(Linux) Ubuntu 18.04 SSH(Secure SHell) (0) | 2021.07.16 |