2016년 9월 1일 목요일

Tensorflow와 Docker, Jupyter 환경 설정

Docker Image를 이용하여 Tensorflow를 설치, 테스트 하는 - 몇달만에 띄우다가 까먹어서 헤깔린 내용들을 ㅠㅠ - 과정을 간단히 정리.

Docker의 특성상... 
 - 기존 환경과 완전히 격리시킬 수 있고, 
 - Light-weight container로 Host machine과 비교해도 Performance 또한 거의 손실이 없는 수준이고,  
 - 의존성 높은 tensorflow library 환경을 구축을 한번에 끝낼 수 있으니 
Tensorflow를 테스트해보고 싶은 사람에게는 Docker를 이용한 설치를 적극 추천한다. 
Production환경은 더 고려할게 많으니 논외. 

1. Docker 설치
MAC, 윈도우, 리눅스 모두 https://www.docker.com/ 에서 Installation Binary를 다운로드 받으면 쉽게 설치 가능하다. 
Docker의 Image는 Virtual Machine 이미지 자체,  이미지가 실행되어 떠 있는 아이는 Container 정도로 이해하면 쉽다. 

2. Tensorflow Docker Image Pull / Run
구글에서 제공하는 Tensorflow docker image를 다운로드 후 실행한다.
Docker는 로컬에 이미 image가 있는 경우 image를 container로 로딩, 
없으면 원격에서 image를 pulling 하여 인스톨 후 로딩한다.

간단하게 한줄이면 끝. 
$ docker run -it gcr.io/tensorflow/tensorflow  
Docker image Pull & Run
열심히 다운로드 하고, Jupyter Notebook을 띄웠다고 하고 끝난다. 

친절하게 
The Jupyter Notebook is running at: http://[all ip addresses on your system]:8888/
라고 하니, 어쩐지 늘 하던대로 http://127.0.0.1:8888/ 로 접속해 보자. 
localhost 접속 결과. 안된다.



그냥 접속하면 안된다. -_-;
docker는 container들에 virtual ip를 부여한다. 

VM IP를 확인하고... 
$ docker-machine ip default
virtual ip를 확인하자!

container port forwarding 옵션을 포함하여 다시 실행해주자.
$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow
port forwarding과 함께하는 docker

그리고 위에서 확인한 http://192.168.99.100:8888 로 접속해보면...
노트북 리스트가 떴다!
이렇게 jupyter가 뜨면 tensorflow 환경 간단 구축 끝.