가상화
개발 환경과 배포 환경이 다른 경우 (여러가지 오류 발생 가능)
같은 OS 환경이어도 올바르게 작동 안할 수 있다.
서버가 100대가 있으면 하나 업데이트 시 모두 업데이트 해줘야 한다.
—> 서버 환경까지도 모두 한번에 소프트웨어화 할 수 없을까? → 가상화
Docker 소개
Container 기술을 쉽게 사용할 수 있도록 나온 도구
Docker Image
Docker Container
- Docker Image를 활용해 실행된 인스턴스
다른 사람이 만든 소프트웨어를 가져와서 바로 사용 가능 (Docker Image 실행)
OS에 관계없이 동일하게 실행 가능
서비스 배포시 원격 저장소(Container Registry) 사용
Docker 기본 명령어
docker pull “이미지 이름:태그”
: 원하는 이미지 다운docker images
: 다운받은 이미지 확인docker run “이미지 이름:태그”
: 다운받은 이미지 기반으로 Docker Container를 만들고 실행docker run --name mysql-test -e MYSQL_ROOT_PASSWORD=1234 -d -p 3306:3306 mysql:8
docker ps
: 실행중인 컨테이너 확인docker ps -a
: 모든 컨테이너 확인docker exec -it “컨테이너 이름(혹은 ID)” /bin/bash
: 컨테이너에 진입 (SSH와 유사)docker stop “컨테이너 이름(ID)”
: 실행중인 컨테이너 중지docker rm “컨테이너 이름(ID)”
: 중지된 컨테이너 삭제docker rm “컨테이너 이름(ID)" -f
: 실행중인 컨테이너도 삭제 (지양)Docker 파일 공유
-v Host_Folder:Container_Folder
docker run -it -p 8888:8888 -v /some/host/folder/for/work:/home/jovyan/workspace jupyter/minimal-notebook
Docker Image 만들기
pip frezze
: 설치한 라이브러리를 모두 보여줌pip list --not-required --format=freeze
: 의존성에 따라 설치된 라이브러리는 보이지 않음pip
로 설치한 라이브러리를 모두 requirements.txt에 저장FROM
: 베이스 이미지 지정COPY
: 로컬 내 디렉토리 및 파일을 컨테이너 내부로 복사WORKDIR
: RUN, CMD 등을 실행할 컨테이너 내 디렉토리 지정RUN
: 어플리케이션 실행에 필요한 여러 리눅스 명령어들을 실행CMD
: 이미지 실행 시 바로 실행할 명령어 지정docker build “Dockerfile이 위치한 경로”
: 이미지 생성(빌드)-t “이미지 이름:태그”
: 옵션으로 이미지 이름과 태그 지정 가능 (미지정시 latest)EXPOSE
: 컨테이너 외부에 노출할 포트 지정ENTRYPOINT
: 이미지를 컨테이너로 띄울 때 항상 실행하는 커맨드 (CMD, RUN과의 차이점은?)MLflow 이전
MLflow 소개
MLflow 핵심 기능
MLflow Component
MLflow 실습
pip install mlflow
: MLflow 설치mlflow experiments create --experiment my-first-experiment
: Experiment 생성mlflow experiments list
: Experiment 리스트 확인mlflow run logistic_regression --experiment-name my-first-experiment
: Run 실행--no-conda
: conda가 없을 때 추가mlflow ui
: UI 실행 (localhost로 MLflow UI 접속)그 외의 TIP
mlflow run
시에 parameter 값을 넣어줄 수 있다 (agrv 사용)MLflow 서버 배포