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

docker run -idt 명령으로 데몬 형태로 더커 컨테이너를 실행합니다. -p,-v,--name``` 옵션으로 포토 설정, 디텍러티 볼륨 마운트 및 컨테이너 명을 설정합니다.

주요 라이브러리 버전

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

옵션 옵션 설명 현제 설정값 설정값 섦명
-p 포트 설정, 호스트 컴퓨터 포트와 더커 컨테이너의 포트 포워드 설정 -p 8888:8888
-p 6006:6006
호스트 8888 포트를 컨테이너 8888에 연결
호스트 6666 포트를 컨테이너 6666에 연결
-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입니다.

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

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

컨테이너의 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을 중점에 두고 있습니다. 최근에는 Deep Learning을 열공 중입니다.
E-mail: taewanme@gmail.com