Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

말랑코딩

[Docker] Dockerfile로 딥러닝 git 코드 한번에 실행시키기 본문

Linux, Docker, Git

[Docker] Dockerfile로 딥러닝 git 코드 한번에 실행시키기

코랑이 2022. 2. 11. 17:23

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 만으로 완벽하게 동일한 환경에서 한번에 파이썬 코드 실행&학습까지 할 수 있다.

얼른 익숙해져서 편하게 쓰고싶다.

Comments