개발 환경을 docker에서 설정하는게 맞는지는 모르겠다. 그래도 자꾸만 환경이 바뀌어서 예전 코드가 동작하지 않는 등의 문제에 대응하기 위해서 개발용 이미지, 수행용 이미지를 만들어 보관하는 것이 하나의 대안이 될 수도 있을 듯 하다.
다만 project하나마다 수십기가의 백업이 있어야 하는지는 좀 고민스럽긴 하다.
image download
docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash
- 이 명령을 통해서 tensorflow-gpu가 인식되는 버전을 다운로드 받고 실행을 확인함
- bash 안에서 nvidia-smi를 실행하면 docker의 host에서 설정한 nvidia driver가 잡혀있는 것을 확인할 수 있고, nvidia-smi를 통해 GPU도 동작하는 것을 확인함.
개발 환경 설정
- 받아진 이미지는 단순하게 python과 tensorflow만 설정된 상태의 docker이기 때문에 개발을 위해서는 container에 관련 환경 설정을 해줘야 함.
- 아래의 명령들로 기본적인 툴 들을 설치 함apt install net-tools apt install openssh-server apt-get install vim apt-get install git
- docker는 실행하고 바로 내려가기 때문에 bash와 연계되어 내려가지 않도록 하고, ssh로 접근할 수 있도록 데몬을 띄워주는 script를 작성 : /run/run.sh#!/bin/bash /usr/sbin/sshd /bin/bash
- 여기까지 만들어진 container를 image로 생성하여 향후 다양한 project에서 사용될 수 있도록 commit 함
- 기존에 떠 있던 container를 stop 하고 CONTAINER ID를 확인
- docker stop <container_name>
- docker ps -a
- image로 commit
- docker commit -a 'lazgob' <container ID> <image name>
- 기존에 떠 있던 container를 stop 하고 CONTAINER ID를 확인
- 이미지로부터 run.sh를 실행하여 개발환경을 시작함 이때 ssh로 접속할 수 있도록 port도 처리하고 향후 사용을 위해 이름도 정의
- docker run -p 2222:22 --name classifysent --gpus all -it <image name> /run/run.sh
- 다른 서버에서도 사용할 수 있도록 image를 저장하고 image에 등록 하는 방법
- 저장: docker image save -o 압축이름.tar 이미지이름
- 등록: docker load < 압축이름.tar
'개발' 카테고리의 다른 글
[python] getattr 함수 (0) | 2021.05.10 |
---|---|
Abseil Python Common Libraries (0) | 2021.05.07 |
pdf2docx를 이용한 pdf 변환 코드 (0) | 2021.04.30 |
eclipse encoding 변경 (0) | 2014.08.20 |
[펌] 언어학 관련 원어 해석 (0) | 2011.05.17 |