Docker+Miniconda로 기계 학습 컨테이너에서 Jupyter를 시작할 때까지

2019/11/19

Miniconda의 공식 이미지를 사용하여 기계 학습 및 데이터 과학을 위한 Docker 환경을 구축합니다. Docker 설치에서 컨테이너에 python 패키지를 설치하고 Jupyter notebook을 열기까지의 단계를 요약했습니다.

docker로 기계 학습용 환경을 구축하는 이점은

  • 라이브러리/버전의 차이가 시비어인 심층 학습 프레임워크의 환경을 손쉽게 구축할 수 있다.
  • (Ubuntu의 경우) 도입이 번거로운 Tensorflow·LightGBM의 GPU판을 간단하게 이용할 수 있다
  • (Windows, Mac의 경우) Linux 시스템 전용 라이브러리를 사용할 수 있습니다.
  • Conda 환경이 끊어지면 즉시 복구 할 수 있습니다.

등을들 수 있습니다.

Docker 설치

각 OS에 Docker 설치는 여기입니다.
Ubuntu,윈도우 프로,Mac

Docker에서 GPU 컨테이너는 Ubuntu에서만 사용할 수 있습니다. Windows나 Mac OS의 PC 밖에 없고 GPU 컨테이너를 사용하고 싶은 경우는, 외장 SSD로부터 Ubuntu를 기동하는 등의 손이 있습니다.

Miniconda 이미지 획득 및 컨테이너 생성

공식 Docker 이미지(Anaconda 2 or 3, Miniconda 2 or 3)는 다음과 같습니다.https://github.com/ContinuumIO/docker-images

Miniconda 3 (python 3.7 기반 Miniconda) 이미지는 터미널에서 다음 명령으로 얻을 수 있습니다.

# docker 컨테이너 내에서 공유 할 파일을 넣을 위치를 유지하는 mkdir -p docker/miniconda # miniconda3의 공식 이미지 얻기 docker pull continuumio/miniconda3 # miniconda 컨테이너를 시작하는 docker run :3 -v /home/[USER 이름]/docker/miniconda:/home continuumio/miniconda8888 /bin/bash

docker run시 옵션 설명
--name : 만드는 컨테이너에 붙이는 이름
-it: 컨테이너와 호스트 명령 프롬프트 연결
-p : 호스트와 컨테이너 포트 연결 : 브라우저에서 jupyter notebook을 열 수 있습니다.
-v: 호스트 폴더 (여기서는 /home/docker/miniconda)를 컨테이너의 /home과 공유합니다.먼저 "mkdir -p docker/miniconda'에서 작성한 폴더 내에 파일(분석 데이터 등)을 넣어 두면 컨테이너 내와 공유할 수 있다.

여기에서는 일단-v옵션으로 공유 폴더를 탑재하고 있습니다. jupyter notebook라면 브라우저를 경유해 파일을 컨테이너내에 업로드·다운로드할 수 있으므로 불필요하게 불필요할지도 모릅니다.

Miniconda 컨테이너 내에서 작업

앞의 명령으로 컨테이너의 명령 프롬프트에 넣기 때문에 (필요한 경우 가상 환경 만들기) 패키지를 설치합니다.

# ML용 가상 환경 만들기 conda create -n ML # 기계 학습 및 데이터 과학 관련 패키지 설치 conda install numpy scipy pandas matplotlib seaborn bokeh jupyter jupyterlab scikit-learn 

컨테이너에서 Jupyter notebook 시작

# jupyter notebook 열기 jupyter notebook --port 8888 --ip=0.0.0.0 --allow-root # jupyter lab의 경우 다음을 실행 jupyter lab --port 8888 --ip=0.0.0.0 --allow-root

출력되는 URL을 브라우저에 입력하면 jupyter를 엽니다.

jupyter를 종료하려면 Ctrl+C
다시 컨테이너에 들어가려면,docker exec -it コンテナID /bin/bash"
만든 Miniconda 컨테이너를 이미지로 저장하려면,docker commit CONTAINER_ID 保存するイメージ名"