본문 바로가기

Linux

(Linux) Ubuntu 18.04 Image, Container, Commit image

반응형

(주의) 전문가가 아닌 단순히 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

 


반응형