2016년 9월 4일 일요일

docker를 이용한 syntaxnet 실행기

지난번에 syntaxnet 설치를 Vbox를 이용해서 하다가 망테크를 탄적이 있었습니다.
아래 내용 따라하신분 없기를 바랍니다.
http://swlock.blogspot.kr/2016/08/syntaxnet.html
이후 몇차례 더 시도 하였지만, 메모리 부족, 끊임없는 빌드등 온갖 고생은 모두하면서도 모두 실패로 돌아갔습니다.

결국 다른 방식을 찾아봤습니다.
docker라는 걸로 갈아탔습니다.

처음 docker라는 개념을 보면서 이해가 어려웠습니다.
http://webofthink.tistory.com/64
docker run -p 8888:8888 -p 6006:6006 -it b.gcr.io/tensorflow/tensorflow
http://airpage.org/xe/language_data/20725
docker run -it --name tensorflow-1 b.gcr.io/tensorflow/tensorflow /bin/bash

위에 명령어들을 보면서 python 버전도 확인안하고 뭐 이런게 다있어... 하고 무시했었습니다.
그렇지만, 여기까지 온거 포기할 수 없어서(사실은 syntaxnet을 꼭 실행해보고 싶어서)사용해 보았습니다.
의외로 쉽게된다는 사실을 오늘 알았습니다....
이런 일주일 동안 VBOX로 삽질하던 생각이 나는군요.




1. docker toolbox 설치관련해서는 아래 링크 참고해서 일단 설치하면 됩니다.

vbox를 설치하지 않았다면 설치시 같이 설치하면됩니다.

https://docs.docker.com/toolbox/toolbox_install_windows/#/step-2-install-docker-toolbox

Step 2: Install Docker Toolbox



2. 설치가 완료되면 바탕화면에 "Docker Quickstart Terminal" 이란 제목의 바로가기가 생깁니다. 해당 바로가기를 실행합니다.


3.  Docker Terminal 안에서 아래와 같은 명령을 차례로 줍니다.

$ docker pull brianlow/syntaxnet-docker:latest
$ docker run -it --name syntaxnet-1 brianlow/syntaxnet-docker /bin/bash
한번이라도 위 명령을 쳤다면 아래와 같은 오류가 발생할것입니다.
Error response from daemon: Conflict. The name "/syntaxnet-1" is already in use by container 35ea218488ce6b7dc05257262d6b8a4ae60e36c59bc07d76bf6d784600d31f1e. You have to remove (or rename) that container to be able to reuse that name..
이럴때는 docker rm syntaxnet-1을 해서 컨테이너를 삭제한뒤 위 docker run 을 사용하거나 docker start / attach를 이용하면 됩니다. 아래 참고

$ docker start syntaxnet-1 << 이렇게 입력
syntaxnet-1

$ docker attach syntaxnet-1 << 이렇게 입력 그리고 나서 엔터를 한번 더 칩니다. 연결해서 되는거라 출력이 없으므로 엔터를 보내서 echo가 될 수 있도록 합니다.
root@de214495bd76:~/models/syntaxnet#

4. 제대로 설치가 완료되었으면 실행해 봅니다.

~/models/syntaxnet# echo 'I saw the man with glasses.' | syntaxnet/demo.sh

아래와 같이 나오면 정상적으로 설치된겁니다.





docker 정리

http://pyrasis.com/Docker/Docker-HOWTO#section-8

docker search [검색할 단어] : Docker Hub에서 이미지를 검색하는 기능입니다.

ex )
$ docker search tensorflow
$ docker search syntaxnet


docker pull [이미지이름] : Docker Hub에서 검색된 이미지를 다운로드 하는 기능입니다.

ex) $ docker pull brianlow/syntaxnet-docker:latest

docker images : 현재 받은 이미지들이 어떤게 있는지 확인하는 기능

$ docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
brianlow/syntaxnet-docker        latest              78d944b23c78        3 months ago        2.278 GB
b.gcr.io/tensorflow/tensorflow   latest              7e0be98eae06        6 months ago        669.6 MB

docker rmi [이미지이름] : 다운 받은 이미지를 삭제합니다.


docker run : 이미지를 실행하여 컨테이너가 되도록 합니다.

docker run [옵션] --name [생성할컨테이너이름] [이미지이름] [실행할 파일]
ex) docker run -it --name syntaxnet-1 brianlow/syntaxnet-docker /bin/bash


docker ps -a : 현재 실행중인 컨테이너 들이 있는지 보는기능

docker start [컨테이너이름] : 중지된 컨테이너를 재실행하는 기능


docker attach : 실행된 컨테이너에 접속하는 기능


docker rm : 생성된 컨테이너를 삭제하는 기능












댓글 3개:

  1. 작성자가 댓글을 삭제했습니다.

    답글삭제
  2. 안녕하세요! 퍼가도되나요?? 출처 남기겠습니다!

    답글삭제
    답글
    1. 답변이 늦었습니다.
      공개된글이니 마음대로 하시면 됩니다.

      삭제