Docker의 중요성, Docker와 메모리

정현·2023년 5월 11일
0

서버

목록 보기
1/1
post-thumbnail

Docker를 이용해 배포를 하면 편하다..!
컨테이너 안에서 환경설정을 할 수 있기 때문에 효율적이다.

그래서 배포를 할 때는 이미 Docker를 유용하게 쓰고 있었는데
최근에 로컬에서 도커의 쓸 때의 장점을 정말 크게 느꼈다.
진작 로컬 도커를 애용했었더라면 그렇게 삽질하지 않았겠지만.. 덕분에 너무 큰 교훈을 얻었다.

바로 배포환경과 개발환경을 맞출 수 있다는 점!
프로젝트에 AI(Yolov5) 코드를 합치려고 했는데, 코랩에서 잘 돌아가던 코드가 로컬에 왔더니 안 돌아갔다ㅎ

다른 이유가 있는 줄 알았지만 결론은 OS가 달라서였다!
윈도우 노트북으로 개발을 하고 있었기 때문에 해당 에러가 난 것.

하하. 이유를 알고난 후에는 당연히 처음부터 생각했어야 하는 것을 놓친 것 같아 부끄러웠다.

Flask나 Django 서버를 로컬에서 돌릴 때 매번 도커를 빌드했다가 죽였다가 하는게 귀찮아서 그냥 run, runserver 명령어를 애용했었는데 도커의 중요성을 다시 한번 깨달을 수 있었다.

참고로 에러명은 'module object is not callable'이었다. 에러명만 보면 OS 때문에 나는 것 같지가 않아서 처음에 바로 알지 못했다. 그리고 타고 들어가 에러가 나는 부분은 torch.load()로 weight 파일을 불러오는 함수였는데 프로젝트에서 사용하는 pt 파일 중 하나만 그 에러가 나고.. 다른 pt 파일로 돌렸을 때 그 파트에서는 에러가 나지 않아 weight 파일 문제인가 싶다가.. train한 버젼과 실행시키는 버젼이 달라서인가 싶다가(그래서 버젼도 다시 맞추고).. 그랬었다..

아 그리고 도커 빌드를 하려면 메모리가 충분히 있어야 한다.
호스트의 리소스가 작업을 시행하기에 부족하면 빌드에 실패한다.

요즘 내가 컴퓨터를 너무 안 끈건지.. cpu 사용량이랑 메모리가 폭발을 하는데 그래서 로컬 도커파일을 분명 맞게 작성한 것 같은데도 중간에 시간이 너무 오래 걸려서 꺼버렸다.
메모리 사용량을 살짝 낮춘 뒤 다시 시도했더니 성공을 하였다.

마찬가지로 서버도 메모리가 적다면 스왑메모리 설정을 통해 늘려주자.
AI와 flask가 담긴 도커 컨테이너인만큼, torch, tensorflow등 상대적으로 무거운 라이브러리들을 설치를 해서 그런가 스왑메모리 없이는 안되더라! (ec2 t2.micro 기준 - gpu없이는 속도가 느리기 때문에 최종 발표를 할 때는 gpu 서버로 옮길 것 같다)

0개의 댓글