Docker Image: 파이썬 기반 머신러닝 학습용 이미지

Docker Image: 파이썬 기반 머신러닝 학습용 이미지

파이썬을 기반으로 머신러닝이나 딥러닝 작업을 진행할 때 가장 귀찮고 꺼려지는 작업은 기본 환경을 준비하는 과정입니다. 파이썬 기본 환경을 효과적으로 관리하기 위해서 Docker Image 형태로 PYML을 만들었습니다. PYML은 텐서플로우, 파이토치, 케라스 및 Scikit-Learn을 활용하여 데이터를 분석할 수 있는 환경이며 UI로 IPython을 사용합니다.

taewanme/pyml 컨테이너 이미지

pyml 더커 이미지는 docker hub에 자동 빌드 프로젝트 형태로 배포되어 있습니다. pyml을 관리하는 레파지토리 주소는 다음 URL과 같습니다.

2018년 7월 5일 현재 최신 버전은 0.1.07입니다. 위 레파지토리의 tag Tags 텝에서 pyml의 최신 이미지 버전을 확인할 수 있습니다.

이 컨테이너에는 다음과 같은 라이브러리가 설치 되어 있습니다.

  • numpy
  • Pandas
  • scrapy
  • sklearn
  • bokeh
  • scipy
  • keras
  • tensorflow
  • pythorch
  • konlpy

이 이미지의 빌드 스크립트는 아래 레파지터리의 Dockerfiles 텝에서 확인할 수 있습니다.

pyml 이미지 설치, 컨테이너 실행, 종료 및 삭제

현재 사용 중인 운영체제에 Docker가 설치되어 있다고 가정하고 이미지를 설치 실행 및 종료하는 방법을 소개합니다.

pyml 더커 이미지 설치

다음 명령으로 더커 이미지를 설치할 수 있습니다.

> docker pull taewanme/pyml:0.1.07

0.1.07: Pulling from taewanme/pyml
b234f539f7a1: Already exists
55172d420b43: Already exists
5ba5bbeb6b91: Already exists
43ae2841ad7a: Already exists
f6c9c6de4190: Already exists
cf5157da4fc3: Pull complete
6ff16b04ac5c: Pull complete
5f9bd51c41f4: Pull complete
5a72f6c1bc04: Pull complete
3ad5a6e64a3c: Pull complete
3add21ca39c9: Pull complete
12f721ff0f07: Pull complete
Digest: sha256:c02dc2009b3bc20cb952fa27bfde64acf200acca75c250da97593c8c2b0ba83e
Status: Downloaded newer image for taewanme/pyml:0.1.07
>

다음 명령으로 이미지 설치를 확인할 수 있습니다.

> docker images --all

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
taewanme/pyml       0.1.07              823a55c894d0        19 hours ago        1.87GB
>

pyml 컨테이어 실행

다음 명령으로 더커 컨테이너를 실행할 수 있습니다.

>docker run -itd -p 8888:8888 -p 6006:6006   \
-v /devspace/pytorch:/root/ipython   \
--name pyml      \
taewanme/pyml:0.1.07

>0b5ee2af902ea823ff0372a9ccc0fbe194eb1c52152de14933da8bce0d0da241
## 주요 라이브러리 버전

실행 옵션은 다음과 같이 정리할 수 있습니다.

|옵션|옵션 설명|현제 설정값|설정값 섦명|
|----|----|----|----|
|-p|포트 설정, 호스트 컴퓨터 포트와 더커 컨테이너의 포트 포워드 설정|-p 8888:8888<br/> -p 6006:6006|호스트 8888 포트를 컨테이너 8888에 연결</br>호스트 6666 포트를 컨테이너 6666에 연결</br> |
|-v|볼륨 설정, 호스트 컴퓨터 디텍터리를 더커 컨테이너에 마운트|-v /devspace/pytorch:/root/ipython|호스트 /devspace/pytorch를 컨테이너 /root/ipython에 마운트 |
|--name|컨테이너 이름 설정|--name pyml |컨테이너 명 pyml로 설정 |

컨테이너가 실행되면 다음 명령으로 컨테이너 실행 상태를 확인할 수 있습니다.

docker ps –all

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0b5ee2af902e taewanme/pyml:0.1.07 “/bin/bash start-not…” 3 minutes ago Up 3 minutes 0.0.0.0:6006->6006/tcp, 0.0.0.0:8888->8888/tcp pyml >

### 컨테이너의 jupyter 서비스 접속 및 활용

컨테이너가 실행되면 ```http://localhsot:8888``` 주소로 jupyter에 접속할 수 있습니다.
Jupyter에 접속하면 패스워드 요청 페이지가 오픈됩니다. 패스워드는 ```Welcome1```입니다.

![](https://taewanmerepo.github.io/2018/07/pyml/030.jpg)

패스워드를 입력하고 이동한 페이지에서 노트북을 만들고 파이썬 코드르 수행할 수 있습니다.

![](https://taewanmerepo.github.io/2018/07/pyml/040.jpg)

노크북을 만들면 다음과 같이 코드를 입력하고 수행할 수 있습니다.

![](https://taewanmerepo.github.io/2018/07/pyml/050.jpg)

### 컨테이너의 jupyter 종료

```docker stop``` 명령으로 컨테이너를 종료하고, ```docker ps``` 명령으로 컨테이너 프로세스 상태를 확인할 수 있습니다.

docker stop pyml pyml docker ps -all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0b5ee2af902e taewanme/pyml:0.1.07 “/bin/bash start-not…” 32 minutes ago Exited (137) 11 seconds ago


### pyml 컨테이너의 삭제

```docker rm``` 명령으로 컨테이너를 삭제하고, ```docker container ls``` 명령으로 컨테이너 목록을 확인할 수 있습니다.

docker rm pyml pyml docker container ls -all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES


### PYML 더커 이미지 삭제

```docker rmi``` 명령으로 이미지를 삭제하고, ```docker images``` 명령으로 더커 이미지을 확인할 수 있습니다.

docker images REPOSITORY TAG IMAGE ID CREATED SIZE taewanme/pyml 0.1.07 823a55c894d0 20 hours ago 1.87GB docker rmi taewanme/pyml:0.1.07 Untagged: taewanme/pyml:0.1.07 Untagged: taewanme/pyml@sha256:c02dc2009b3bc20cb952fa27bfde64acf200acca75c250da97593c8c2b0ba83e Deleted: sha256:823a55c894d003b985736164a0e2753f3679c259f52031bc1fa0a33bf5bb204d Deleted: sha256:6ebf9e6163e3da895248c340984846e5ddb6bcbd6f9e5372e88ec02ad5accd0f Deleted: sha256:80dbc3fda391e5664252e36b0948c295bdcad68334c2fa92176dccfc5f0f32e0 Deleted: sha256:fe7d183b729bbc766f5803fd19e149db4f69bdc07d160d4b6ed2720dccb3ed4f Deleted: sha256:66c8bb652e6f7b792aadba8b3e95ccf6f278be866a2a03bb8692733cd923fef2 Deleted: sha256:d17ccf6f6dcffee261a47dc6f363c4019024f075fdf442d32cae5bbf8f771d61 Deleted: sha256:9d27577fdbc5a9c7efc2a04f4537d9c001b719b06c557980019868b49457beda Deleted: sha256:b6708b96d9c7e3a1422347357a97e15d0438db3fa05ce0fff4cb11ad50c1ea2b Deleted: sha256:ef572e1ba2ecca900f0ec3db00e997de12dd380ce3e360b5813fd75920232359 Deleted: sha256:98fc4d5421178c7be7d5718d2d44abba8053dc5c712e51658fe5b872675b4f7a Deleted: sha256:7b2cc05dfd889e28234f8831c80ac20cf299d5bbebbbac013f8f7d2b7abc0d65 Deleted: sha256:6b0187d1cdff63eb5966ac72bf4ccd96150586c1409eb858bb98783f02018ee7 Deleted: sha256:644879075e24394efef8a7dddefbc133aad42002df6223cacf98bd1e3d5ddde2 docker images REPOSITORY TAG IMAGE ID CREATED SIZE


## pyml 구성 라이브러리

pyml에서는 다음과 같은 라이브러리가 설치됩니다.

```pip freeze```로 설치된 라이브러리를 확인하면 120여개의 라이브러리가 설치됩니다. 주요 라이브러리 버전은 다음과 같습니다.

beautifulsoup4==4.6.0 bokeh==0.13.0 h5py==2.8.0 html5lib==0.9999999 ipykernel==4.8.2 ipython==6.4.0 ipython-genutils==0.2.0 jupyter==1.0.0 Keras==2.2.0 Keras-Applications==1.0.2 Keras-Preprocessing==1.0.1 lxml==4.2.3 matplotlib==2.2.2 mistune==0.8.3 networkx==2.1 nltk==3.3 numpy==1.14.5 pandas==0.23.1 scikit-learn==0.19.1 scipy==1.1.0 Scrapy==1.5.0 seaborn==0.8.1 tensorboard==1.8.0 tensorflow==1.8.0 torch==0.4 torchvision==0.2.1 xlrd==1.1.0


## 요약

taewanme/pyml 더커 이미지는 파이썬 기반의 기계학습/딥러닝 실행환경입니다. 다음 명령으로 pyml을 설치하고 실행할 수 있습니다.

docker pull taewanme/pyml:0.1.07 docker run -itd -p 8888:8888 -p 6006:6006 -v /devspace/pytorch:/root/ipython –name pyml taewanme/pyml:0.15 ```

실행시 포트 매핑과 볼륨 지정이 필요합니다. pyml 컨테이너는 Jupyter UI를 제공하며 패스워드는 Welcome1입니다.

작성자: 김태완
김태완 avatar
작성자: 김태완
1999년 부터 Java, Framework, Middleware, SOA, DB Replication, Cache, CEP, NoSQL, Big Data, Cloud를 키워드로 살아왔습니다. 현재는 빅데이터와 Machine Learning을 중점에 두고 있습니다.
E-mail: taewanme@gmail.com