😇 교수님께서 만들어주신 ssh 서버, 😇 교수님께서 하사하신 gpu로
docker, container, images 생성 및 라이브러리 설치
작업리스트 | |
---|---|
1 | |
2 | |
3 | |
4 | PyTorch/Cuda 세팅된 도커 이미지 풀링 - SSH 서버 환경 구축(2) |
5 | 도커 이미지를 이용해 도커 컨테이너 설정 (생성 시 포트, 데이터볼륨 지정 등 필요) - SSH 서버 환경 구축(2) |
6 | 컨테이너에서 ssh 서버 및 필요한 라이브러리 설치 - SSH 서버 환경 구축(2) |
#Pytorch 최신 버전의 Docker를 받고 싶으면 아래과 같이 하자.
1) docker pull pytorch/pytorch:latest
2) docker images
# 결과
REPOSITORY TAG IMAGE ID CREATED SIZE
pytorch/pytorch latest 5ffed6c83695 2 months ago 7.25GB
Tag Created는 방금만들었는데도 2 monthes ago로 나오는걸 보면 별로 상관이 없는 듯 하다. 나중에 왜그런지 알아봐야겠음
생각보다 사이즈가 꽤 크다. pytorch에 기본적으로 깔리는 numpy, torchaudio 등등 자동으로 설치되기 때문에 악명높은 tensorflow 환경구축보다는 빠른 듯 하다.
docker rmi <image_id>
여기서 image ID는 5ffed6c83695 이다.
나는 삭제할 이미지가 없어서 건너뛰었다.
Docker는 Read-only layer(Image), Read-write(Container)가 있고, Read-only에서 파일을 수정하면 Read-write layer가 쌓인다. 이 때 Container에서 mount하여 파일을 수정시키지만 Read-only에서는 수정된 파일을 숨기고, 삭제하진 않는다. 이후 컨테이너를 삭제하면 변경된 파일 내역은 유실되고 Read-only의 숨겨진 파일 내용을 다시 가져온다. 대용량의 변경된 데이터를 저장하기 위한 다양한 방법 중 Docker Volume을 활용하는 것이 있다.
참조 : https://sightstudio.tistory.com/32
위 그림은 볼륨의 세 가지 종류를 나타낸다.
Bind Mount: 호스트 환경의 특정 경로를 컨테이너 내부 볼륨 경로와 연결하여 마운트한다. 이 방법은 보안에 영향을 미칠 수도 있다고, 홈페이지에서 경고하고 있긴 하다... 흠.
Volume (가장 일반적): 도커 볼륨은 도커 컨테이너에서 도커 내부에 도커 엔진이 관리하는 볼륨을 생성하는 것이다. 생성된 볼륨은 호스트 디렉터리의 /var/lib/docker/volumes 경로에 저장되며, 도커를 사용하여 관리가 용이하다.
tmpfs Mount: 이 방법은 리눅스에서 도커를 실행하는 경우에만 사용할 수 있는 기능이라고 한다. 호스트의 파일 시스템이 아닌, 메모리에 저장하는 방식을 사용한다.
참조 : https://anweh.tistory.com/79
그렇다면 나는 가장 일반적인 Volume Mount 방식으로 볼륨을 생성해보겠다!
1) docker volume create <volume name> #도커 볼륨 생성
2) docker volume ls #볼륨 목록 리스트 확인
3) docker volume inspect <volume name> #도커 볼륨 정보 확인
마운트 포인트는 var/lib/docker/volumes 인 것을 확인할 수 있다.
볼륨 생성 완료!
도커 컨테이너 실행 시 -p 옵션으로 실행하여 포트 포워딩을 설정할 수 있다.
docker run -p <host port number>:<container port number>/<protocol> [IMAGE NAME] [OTHER OPTIONS..]
예) -p 8080:80/tcp 옵션 적용하면, 호스트 시스템의 8080번 tcp 포트로 유입되는 트래픽은 모두 도커 컨테이너 80번 tcp 포트에 전달된다.
그러니까 나는 첫 ssh 접속 시 부여받은 호스트 포트번호 -p 36022가 host port number이고, container port number를 지정해주면 된다.
이부분은 교수님께 잠시 물어봐야겠다.
[IMAGE NAME]을 위해 docker image를 만들어주고 실행해야 한다.
참조 :
Deepo 도커를 사용해서 딥러닝/머신러닝 개발에 필요한 라이브러리를 설치해볼 예정이다.(잠깐 그럼 굳이 내 도커를 설치안해도 됐잖아..)
등등.. 정말 내가 쓰는 것만 다 모아놨다.
python은 ubuntu20.04 기본 3.8이 있는데 텐서에선 3.6만 돌아가므로 따로 설치해두는 것이 좋다.
설치환경은
이렇다고 한다. Ubuntu 20.04이어도 상관 없을 듯 하다.
위의 포스팅을 따라 jupyter lab 포트를 바인딩하여 사용할 듯 하다. 추가적으로 필요한 라이브러리는 다음 포스팅에 올릴 예정이다. 아마 Google Magenta 모델 구현 포스팅에서 자세하게 설명할 듯 하다.