[Docker] 도커 데스크탑 설치 + mlflow 웹서버 환경 구축해보기

es.Seong·2023년 5월 28일
0


딥러닝을 바탕으로한 서비스 제작 프로젝트를 담당하게 되면서 자동화와 효율적인 ML파이프라인 구축을 위해 MLOps에 도전했다. 학교에서 py나 ipynb 파일만 실행하는 것이 아니라, 하나의 서비스를 만들어야하기 때문에, 이것저것 해보며 MLOps 서버 구축 도전을 했다. 현재는 사용하지 않지만 MLflow 웹서버 구축까지 성공했던 도커를 활용한 MLflow 서버 구축에 대해 알아본 것들을 정리하였습니다.

Docker란?

도커는 컨테이너화된 프로그램을 개발, 배포 및 실행하기 위한 플랫폼이다.

컨테이터
프로그램과 그에 필요한 모든 종속성(환경설정, 라이브러리 등)을 포함하는 실행 가능한 단위로 패키징된 것.

왜 도커를 많이 사용할까?


도커는 위 그림과 같이 프로그램들을 컨테이라는 격리된 환경에 배치한다. 이 컨테이너는 VM(Virtual Machine)구조와 다르게 하나의 OS를 공유하며 서로 독립적으로 실행된다.
VM은 하나의 환경에 각각의 OS가 정의되는 구조이다. 그렇기 때문에 용량도 크고 OS의 종속성이 강하다.
하지만, 도커는 호스트 시스템에 구애받지 않고, 일관되게 실행된다.이는 프로그램의 이식성을 뛰어나게하고, 확장에 용이하게 해준다.

윈도우 10에서 도커 데스크탑 설치

도커 데스크탑 설치

도커 공식 홈페이지
https://www.docker.com/

도커 설치를 위해 공식홈페이지에서 Download Docker Desktop을 눌러 설치를 진행했다. 시키는대로 하면 정상적으로 설치가 됐다.

Docker desktop requires a newer wsl kernel version on Windows 에러

도커 데스크탑을 설치 후 실행을 하였는데

"Docker desktop requires a newer wsl kernel version on Windows"
라는 에러와 함께 도커가 종료됐다. 하지만 이는 WSL을 최신으로 업데이트하라는 문구였고, 친절하게 해결방법도 제시해주고 있었다.
"wsl--update"를 윈도우 파워쉘에서 실행해주면 오류가 해결된다.

이렇게 해주면 업데이트가 진행되고 도커가 실행된다.

WSL(Windows Subsystem for Linux)

WSL이라는 단어가 나왔는데, WSL은 윈도우 운영체제에서 리눅스 터미널을 사용할 수 있게 해준다.

도커에서 mlflow 서버 구축

mlflow 공식 도커 이미지 받기

MLflow 공식 폼페이지에 도커 이미지를 제공하고 있다.
https://mlflow.org/docs/latest/docker.html


이렇게 나오는데 맨마지막 줄만 사용하면 된다.
docker pull ghcr.io/mlflow/mlflow:v2.0.1
(저는 2.3.0이 이미 설치되어있어서 2.0.1을 임의로 설치했습니다.)
여기서 2.0.1은 설치할 MLflow의 버전을 나타낸다.
만역 2.3.0버전을 사용하고 싶다면 버전만 수정해주면 된다.

이제 도커 데스크탑을 실행해서 Images에 들어가보면 다음과 같이 MLflow 이미지가 있는 것을 확인할 수 있다.

mlflow 실행

이제 등록한 mlflow 이미지를 실행해볼 것이다. 이미 설치된 2.3.0 버전을 실행한 명령어이다.

docker run -p 5000:5000 --name mlflow-server -v /path/to/local/directory:/mlflow ghcr.io/mlflow/mlflow:v2.3.0 mlflow server --host 0.0.0.0

cmd창에서 다음 명령어를 통해 MLflow 웹서버를 실행할 수 있다.

-p : 서버 포트 번호를 정의
--name: 컨테이너 이름을 설정
-v : pull로 등록한 이미지 경로
mlfow server : mlflow 서버를 실행하기 위한 명령어
--host 0.0.0.0 : 외부 PC에서 해당 웹서버에 접근을 허용
-d : 백그라운드 실행, cmd창 종료해도 계속 실행됨,

도커 데스크탑에서 좌측 Containers를 눌러보면 다음과같이 컨테이너 아이콘이 초록색으로 변하고 Status가 Running이 된 것을 확인할 수 있다.

이제 mlflow 서버가 열렸으니 접속해보자.
이전 명령어로 5000번 포트에 서버를 열었기 때문에 :5000으로 접속하면 된다.

http://localhost:5000/

도커 컨테이너에 mlflow 서버가 잘 실행되는 것을 확인할 수 있다.

--host0.0.0.0을 입력했다면, 외부 PC에서 접속할 때 서버를 열었던 PC의 ip를 통해 접속할 수 있다.
http://xx.xx.xx.xx:5000/
이렇게 접속하면 된다.

도커와 MLflow의 도커 이미지를 활용해서 아주 간단하게 MLflow 서버를 구축해보았습니다.

저는 실무에서 도커를 사용하지 않기 때문에 우분투 환경에서 다시 설치해서 서버 구축하고, 결과를 저장하는 것 까지 차근차근 이어나가보도록 하겠습니다. 감사합니다.

profile
Graduate student at Pusan National University, majoring in Artificial Intelligence

0개의 댓글