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
입니다.