본문 바로가기

IT/Docker

[Docker] CUDA Image 가져와서 딥러닝 환경 세팅까지

cuda버전 10.1이 설치된 상황인데 더 높은 버전이 필요한 상태이다. 그럴 때 해당 방법을 쓰면 해결 될 것 같다. (아직 안해봄)

 

 

Docker CUDA Image 가져와서 딥러닝 환경 세팅까지

기존 서버 : Ubuntu 18.04 CUDA 10.2 NVIDIA RTX 2080 Ti 위에 CUDA 10.0 도커를 구동해야 하는 상황이 왔다. 학습용 코드가 tensorflow-gpu==1.13.1, keras==2.2.4를 지원하는데 버전을 맞추기 위해서는 CUDA 10...

huhji2newv.tistory.com

 

1. Docker Pull from Docker Hub

docker hub에서 적당한 docker image 검색

 

nvidia/cuda 공식 이미지 중에서 CUDA 10.0, cudnn7, ubuntu 18.04용 tag를 검색합니다.

 

너로 정햇다!

10.0-cudnn7-runtime-ubuntu18.04 이미지를 선택합니다.

docker pull nvidia/cuda:10.0-cudnn7-runtime-ubuntu18.04

docker pull 명령어 뒤에 가져오고 싶은 docker image tag 입력

아래와 같이 나오면 성공입니다.

 

 

도커 이미지를 잘 받아왔는지 확인

docker images

순서대로 REPOSITORY, TAG, IMAGE ID, CREATED, SIZE 입니다.

 

 

2. Docker TAG 변경

한 서버에서 구동하고 있는 도커가 많고 저 TAG명을 그대로 쓰기는 어려우니

REPOSITORY와 TAG이름을 변경해봅시다.

 

docker tag 기존 REPOSITORY:기존TAG 바꿀REPOSITORY:바꿀TAG

docker tag nvidia/cuda:10.0-cudnn7-runtime-ubuntu18.04 trainserver:cuda10.0

docker images로 확인해보면 다음과 같이 새로운 docker image가 생성되었음을 알 수 있습니다.

IMAGE ID는 같고 REPOSITORY와 TAG이름만 다른 것을 확인!

 

 

 

3. Docker RUN with PORT

이제 도커이미지를 컨테이너로 올리는 작업이 남았다.

처음에 이 개념이 잘 이해가 안됐는데, Docker Hub에서 가져온 이미지를 붕어빵 틀로 생각하고

원하는만큼 붕어빵, 즉 컨테이너를 만들 수 있다고 생각하면 된다.

 

도커를 설치한 서버는 서버실에 있고 나는 ssh를 통해 원격으로 작업해야 하는 상황이므로

port를 뚫어주는 작업을 같이 했다.

 

docker run <옵션> <이미지 이름> <실행될 장소>

 

docker run 명령어에 필수적으로 들어가야 하는 옵션에 -it 가 있다.

예전 도커 버전에는 -i와 -t를 따로 쓰기도 했는데 지금은 -it로 붙여 쓸 수 있다.

 

-i (=interactive) : 사용자와 상호작용 할 수 있는 표준입출력을 제공한다는 명령어이다.

-t (=tty) : 텍스트 기반의 터미널(pseudo-tty)를 사용가능하게 해준다. (bash 셀 사용할 때!)

-gpus : 특정 gpu만 할당

-p : <호스트 포트> : <컨테이너 포트>

 

즉, 도커 컨테이너를 굽고 bash에 접속해서 딥러닝 무언가를 학습할 계획이라면 무조건 적어야 하는 명령어...

 

docker 공식 페이지를 참고하세요!

docker run -it --names="jhhuh_cuda10.0" --gpus "device=1" -p 32805:22 -p 32609:8888 trainserver:cuda10.0 /bin/bash

지금의 경우에는 내컴퓨터에서 ssh 원격으로 서버 컴퓨터에 접속해야 하므로

서버 호스트의 22번 포트를 32805번 포트로 열어주었다. 

위 명령어를 실행한 후

docker ps -a

를 통해 도커 컨테이너 확인.

 

도커를 실행시켜주면 PORT가 열린다.

docker start <컨테이너 ID>

 

'IT > Docker' 카테고리의 다른 글

[Docker] Systemctl 오류  (0) 2021.11.25
[Docker] Docker compose  (0) 2021.11.23
[Docker] WSL + Docker + GPU + Pytorch + Jupyter notebook  (0) 2021.11.16
[Docker] 도커 파일 복사 (로컬 <-> 컨테이너)  (0) 2021.05.24
[Docker] Docker User Guide  (0) 2021.05.24