말랑코딩
[Docker] Dockerfile로 딥러닝 git 코드 한번에 실행시키기 본문
Dockerfile을 알기 전, 내가 파이썬으로 딥러닝을 돌릴 때 하던 방식은 이랬다.
[before] 기존의 방식
1. 도커 이미지 pull
ex) docker pull [image name]
2. 나의 기존 디렉토리 마운트(run 할때 -v 옵션으로)
ex) docker run -it --ipc=host --gpus=all -p=8888:8888 -v=/ai-data/disk1/:/app --name=torch0127 continuumio/miniconda3
3. 필요한 디렉토리 추가 설치
4. 파이썬 코드 실행
하지만 dockerfile을 통해 이 모든 과정을 파일 하나로 코드 실행까지 수행할 수 있다는 것을 알았고,
이렇게 매번 필요한 라이브러리를 추가로 설치하고 실행코드를 입력하는 방식이 매우 비효율적이라는 것을 알게됐다.
[after] Dockerfile로 git 코드 한번에 실행하기
1. Dockerfile 생성
FROM : 가져올 도커 이미지
RUN : 이미지에 추가로 설치할 라이브러리 등을 명령어로 작성
COPY A B : 현재 나의 A 디렉토리를 도커내부의 B 디렉토리로 마운트(docker run -v 옵션과 동일)
WORKDIR : 이미지 실행 후 시작 디렉토리
ENTRYPOINT : 이미지 실행 후 시작디렉토리에서 실행할 명령어를 단어로 나열
CMD : ENTRYPOINT 와 함께 줄 명령어 옵션
Dockerfile 옵션 등에 관한 내용은 추후 더 공부해서 추가할 예정이다.
2. 도커파일 빌드
docker build . -t [Dockerfile로 만들 이미지명]
Dockerfile이 존재하는 디렉토리 위치와 동일한위치에서 위 명령어 입력
-> 지정한 이미지명으로 이미지가 생성됨(docker images로 확인)
3. git 코드 가져오기
1) 오픈 소스 git 이용할 경우
git clone https://github.com/Megvii-BaseDetection/YOLOX.git # 오픈소스 git 주소
2) 나의 git repo 사용할 경우
(이 경우에는 git init 등 초기화작업 필요함, 추가 포스팅 예정)
git pull [내 git 주소]
실행할 코드의 git 주소를 가져온다.
위의 git 주소는 Dockerfile이 없는 git 오픈소스를 예시로 가져왔다. (yolox)
git 오픈소스에서 Dockerfile 이 있으면 가장 편하긴 하다.(나도 사용은 안해봄)
4. 도커이미지 실행
docker run -it --gpus=all --ipc=host -p=8888:8888 -v=/my/data/dir:/docker/data/dir [생성된도커이미지명]
위에 Dockerfile 에서 COPY 옵션으로 준 것은 git code 디렉토리를 마운트한 것이고,
위 명령어에서 -v 옵션으로 준 것은 코드를 실행하기 위한 "데이터" 디렉토리를 마운트한 것이다.
-> 위의 docker run ~~ 명령어만 실행하면 python 명령어까지 자동 실행되고, 학습이 시작된다.
+ docker-comose.yml 라는 파일을 이용하면 docker run 할 때의 옵션마저 줄 필요가 없다고 배웠다.
이것도 나중에 공부해서 실행해보고 업로드할 예정이다.
결론
Dockerfile 만으로 완벽하게 동일한 환경에서 한번에 파이썬 코드 실행&학습까지 할 수 있다.
얼른 익숙해져서 편하게 쓰고싶다.
'Linux, Docker, Git' 카테고리의 다른 글
[Linux] apt- get update VS apt-get upgrade (0) | 2022.02.15 |
---|---|
vscode에서 원격 서버의 docker container에 접속하기 (0) | 2022.01.25 |
[Docker] 도커 레지스트리란? (0) | 2022.01.24 |
[Docker] Dockerfile 작성, 옵션, 빌드 (0) | 2022.01.24 |
[Linux] 명령어 한줄로 마운트(mount)하기 (0) | 2022.01.18 |