작성자: admin 작성일시: 2016-04-07 21:30:03 조회수: 11505 다운로드: 232
카테고리: 개발/운용 환경 태그목록: Docker

도커 이미지 설치 및 실행

datascienceschool/rpython 도커 이미지

필자는 데이터 분석 환경을 쉽게 설치할 수 있도록 R과 파이썬 등 데이터 분석에 필요한 모든 소프트웨어를 설치한 리눅스 환경을 datascienceschool/rpython라는 이름의 도커 이미지로 만들어 도커 허브(docker hub)라고 하는 웹 사이트에 올려놓았다.

datascienceschool/rpython은 리눅스 환경에서 R 혹은 파이썬을 사용하여 데이터 분석을 하는 데 필요한 대부분의 소프트웨어를 포함하고 있으므로 별도의 복잡한 설치 과정 없이 바로 데이터 분석을 시작할 수 있다.

사실 datascienceschool/rpython 이미지는 파이썬2에 기반을 둔 datascienceschool/rpython2와 파이썬3에 기반을 둔 datascienceschool/rpython3 두 종류가 있다. 버전 숫자가 붙어있지 않은 datascienceschool/rpython 이미지는 datascienceschool/rpython3의 복사본이다. 이 책에서는 파이썬3를 사용한다. 만약 파이썬2를 사용하고 싶다면 datascienceschool/rpython2를 설치하면 된다.

datascienceschool/rpython 이미지에 포함된 운영체제나 소프트웨어들은 다음과 같다. (아래에 적힌 버전은 2017년 9월 기준으로 적은 것이며 계속 업데이트 된다.)

  • 운영체제
    • 우분투 16.04
  • 파이썬
    • 버전 2.7 (rpython2) 또는 버전 3.6 (rpython3)
    • ipython, numpy, scipy, pandas, matplotlib, seaborn, scikit-learn, nlpy, gensim, theano, tensorflow, keras 등
  • R
    • 버전 3.4
    • RStudio
  • 데이터베이스
    • PostgreSQL, Redis, MongoDB
  • 유틸리티
    • git, vim, emacs, tex-live, pandoc, graphviz, imagemagick 등

이 이미지에는 dockeuser라는 이름의 계정이 이미 만들어져 있으며, 이 계정으로 사용하는 것을 권장한다. 계정의 암호는 dockeruserpass로 설정되어 있다.

  • 계정 이름: dockeruser
  • 계정 암호: dockeruserpass

datascienceschool/rpython 이미지에 대해 더 자세히 알고 싶다면 이미지 제작용 소스 코드가 올라가 있는 다음 깃허브 레포지토리를 참조한다.

도커 이미지 다운로드

datascienceschool/rpython 도커 이미지를 내려받아서 설치하려면 우선 앞 절에 설명한 바와 같이 도커 툴박스부터 설치하고 도커 터미널을 실행해야 한다. 도커 툴박스가 정상적으로 설치된 경우, 도커 터미널을 실행하면 다음과 같은 화면이 뜰 것이다. 처음 실행하는 경우에는 수 분이 걸릴 수도 있다.

                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/

docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com


user@PC MINGW64 ~
$

이 화면에서 다음과 같이 입력한다. 이 때 가장 앞의 달러표시($)는 터미널의 프롬프트(prompt)를 뜻하는 것으로 사용자가 입력하는 것이 아니다.

$ docker pull datascienceschool/rpython:latest

이 명령을 실행하면 도커 이미지를 내려받기 시작한다. 네트워크 상태에 따라 내려받는 데 약 10분 ~ 20분이 소요될 수 있다. 다음과 같은 화면이 나타나면 내려받기가 완료된 것이다.

그림 2-12 도커 이미지 다운로드 화면

이미지를 정상적으로 다운로드 하였는지 확인하기 위해 다음과 같이 docker images 명령으로 현재 존재하는 도커 이미지 목록을 출력한다. (이미지 id와 크기는 다를 수 있다.)

$ docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED              SIZE
datascienceschool/rpython   latest              ce2aabd3c3d0        1 minutes ago        11.54 GB

목록에 datascienceschool/rpython가 나타났다면 정상적으로 내려받은 것이다. 도커 이미지를 내려받은 후의 시스템 상태를 그림으로 나타내면 다음과 같다.

그림 2-13 도커 이미지 다운로드 후의 시스템 상태

datascienceschool/rpython 컨테이너 실행

컨테이너를 실행하기 전에 우선 자신의 호스트 컴퓨터의 계정이름과 홈 디렉터리를 확인한다. 만약 윈도우 운영체제를 사용하고 있고 사용자 이름이 jane이면 홈 디렉터리는 아마도 c:\Users\jane일 것이다. 이 디렉터리는 도커 터미널에서 /c/Users/jane이라는 이름이 된다. 슬래시(slash) 기호와 백 슬래시(back slash) 기호가 다르다는 점에 주의한다.

호스트 계정 이름을 알았으면 이제 분석 환경을 담고 있는 datascienceschool/rpython 이미지를 실행해 보자. 다음 명령을 실행한다. 호스트계정이름이라고 되어 있는 부분에는 자신의 호스트 계정 이름을 대신 써 넣는다. 만약 호스트 계정 이름이 빈 칸을 포함하고 있다면 큰따옴표(" ")로 전체 폴더 경로를 감싸야 한다.

Mac OS는 홈 디렉터리 경로를 /Users/호스트계정이름으로 설정한다.

$ docker run -Pit --name rpython -p 8888:8888 -p 8787:8787 -p 6006:6006 -p 8022:22 -v /c/Users/호스트계정이름:/home/dockeruser/hosthome datascienceschool/rpython

위 명령의 의미는 다음과 같다.

  • docker run
    • 도커 컨테이너를 최초로 실행하는 명령이다.
  • -Pit 옵션
    • 컨테이너에서 사용하는 모든 네트워크 포트(port)를 외부로 개방하고 셸을 사용하기 위한 옵션이다.
  • -p 옵션
    • 컨테이너 내부의 포트를 호스트 컴퓨터로 열어준다. 포트는 일단 run 명령을 실행할 때만 열 수 있으므로 앞으로 사용할 포트는 미리 열어주어야 한다.
    • 여기에서는 8888, 8787, 6006 포트는 같은 포트 번호로 열었고 22 포트는 8022 로 변경하여 열었다. 따라서 호스트에서는 8022번을 접속하면 컨테이너에서는 22번 포트가 접속된 것으로 인식한다.
    • 각각의 포트는 다음 프로그램을 사용하기 위한 것이다. 접속 방법에 대해서는 이후에 자세히 설명한다.
      • 8888: 주피터 노트북
      • 8787: RStudio
      • 6006: 텐서 플로우의 텐서 보드
      • 22: ssh 서비스
  • -v 옵션
    • 호스트와 도커 컨테이너간에 폴더를 공유하기 위한 옵션
    • 여기에서는 호스트 계정의 홈 디렉터리를 도커 컨테이너 안의 /home/dockeruser/hosthome 이라는 이름의 디렉터리로 만들어 넣었다. 도커 컨테이너내에서 이 디렉터리로 들어가면 호스트 계정의 홈 디렉터리를 사용할 수 있다. 여기에서 파일과 디렉터리를 만들거나 변경, 삭제하면 호스트 컴퓨터의 파일도 영향을 받는다.

정상적으로 동작하면 프롬프트가 다음처럼 바뀌는 것을 볼 수 있다. 여기에서 dockeruser 는 도커 컨테이너안의 사용자 이름이고 306d4d3d002b는 도커 컨테이너 이름이다. 컨테이너 이름은 사용할 때마다 계속 달라질 수 있다.

dockeruser@306d4d3d002b:~$

만약 위의 명령을 실행했는데 다음과 같은 오류 메시지가 나온다면 이미 docker run 을 한 번 실행했기 때문이다.

Error response from daemon: Conflict. The name "/rpython" is already in use by container

이 경우에는 docker run 명령이 아니라 docker start rpython 을 실행해야 한다. 도커 명령에 대한 자세한 설명은 다음 절에 나온다.

그림 2-14 도커 컨테이너 실행 이후의 시스템 상태

자 이제 다시 정리해 보자. 여기까지 제대로 따라왔다면 여러분은

  • 여러분 실제 컴퓨터의 윈도우 운영체제(호스트) 안의
  • Oracle VM VirtualBox 가상 머신의 boot2docker 운영체제(가상 머신) 안의
  • 도커 datascienceschool/rpython 컨테이너의 우분투 리눅스 운영체제(도커 컨테이너) 안으로

들어온 것이다.

일단 컨테이너가 가동된 다음에는 고래 그림이 있는 도커 터미널 창을 닫아도 된다. 단, exit 명령 등은 사용하지 않고 창 우측 상단의 X 표시를 누르는 방법으로 닫자. 창을 닫아도 도커 컨테이너는 계속 가동되고 있으므로 걱정할 필요가 없다.

주피터 노트북 사용

주피터 노트북(Jupyter Notebook)은 웹 브라우저에서 R 또는 파이썬 등을 실행할 수 있는 다중 언어 실행 환경이다. 주피터 노트북을 사용하려면 호스트 컴퓨터(윈도우나 매킨토시)에서 웹 브라우저를 띄운 다음 주소창에 다음 주소를 입력한다

만약 자신의 컴퓨터에서 만들어진 가상 머신의 IP 주소가 192.168.99.100 이 아닐 때는 해당 주소를 사용해야 한다.

정상적으로 작동한다면 다음과 같이 주피터 노트북 홈페이지가 나타난다.

그림 2-15 주피터 노트북 실행 화면

R과 RStudio 사용

datascienceschool/rpython 컨테이너 안에는 R과 대부분의 통계 분석용 R 패키지들이 이미 설치되어 있으므로 사용자가 따로 설치할 필요가 없다. 또한 RStudio(서버 버전)라고 하는 R용 통합 개발 환경도 설치되어 있다. RStudio를 실행하려면 호스트(윈도우나 매킨토시)에서 웹 브라우저를 시작하고 다음 주소를 입력한다

정상적으로 작동한다면 다음과 같이 RStudio 로그인 화면이 나타난다.

그림 2-16 RStudio 실행 화면

질문/덧글

사용자에 의해 삭제되었습니다. kang*** 2016년 6월 10일 11:38 오후

사용자에 의해 삭제되었습니다.

도커 컨테이너 실행 오류에 관해 질문드립니다. guts*** 2016년 6월 14일 9:10 오후

저는 우분투 14.04를 사용하고있습니다.

오늘 업데이트된 datascienceschool/rpython:latest 이미지를 다운로드한 후, "docker run ~~" 을 실행했을때,

"FATA[0000] Error response from daemon: Cannot create container with more than 127 parents." 라는 에러가 발생하였습니다.

검색을 해봤을 때에 마땅한 해결책을 찾지 못하여 해결방안을 알고계신지 질문드립니다 ^^

답변: 도커 컨테이너 실행 오류에 관해 질문드립니다. 관리자 2016년 6월 16일 3:50 오후

docker info 로 버전을 확인하신 후 버전 업그레이드를 하셔야 합니다.

docker image다운 관련 질문 minj*** 2016년 9월 16일 11:44 오전

기존에 사용하던 컨터이너가 안잡히고 이상하여, docker rmi 구문을 이용하여 기존 image를 지우고 새로 다운을 받았는데요.
모둔 값이 pull complete라고 뜨지 않았는데, 다 다운된것처럼 종료되었습니다.

그리고 나서 docker images 를 처보면 아래와 같이 보입니다.

Repository Tag Image ID Created Size
datascienceschool/rpython latest ada190b7ff2f 9 days age 7.702GB
datascienceschool/rpython <none> ada190b7ff2f 9 days age 7.702GB

image를 지우고 다시 다운을 받아야하는 부분일까요?

그리고 docker quick start 를 실행할때 , 예전에는 그런 문구가 없었던 것으로 기억되는데 아래와 같은 문구가 같이 뜹니다.
이부분도 문제 없는 부분일까요?
"Started machines may have new IP addresses. You may need to re-run the 'docker-machine env' command.
Regenerate TLS machine certs? warning : this is irreversible. <y/n>: Regeneration TLS certificates"

답변: docker image다운 관련 질문 관리자 2016년 9월 17일 11:28 오전

말씀하신 현상에서 다운로드는 다시 하시 않으셔도 될 것 같습니다.
그런데 IP address는 변경되었을 수도 있기 때문에 Quickstart terminal에서 나오는 메세지를 확인하시거나
docker-machine ip
명령으로 IP address를 확인해 주세요.

docker run 실행 시 오류가 발생합니다. shin*** 2017년 2월 1일 7:07 오후

docker run -Pit --name rpython -p 8888:8888 -p 8787:8787 -p 6006:6006 -p 8022:22 datascienceschool/rpython
을 실행했을 때 아래와 같은 오류가 발생합니다.

Error response from daemon: Conflict. The name "/rpython" is already in use by container ~~~~~~~. You have to remove (or rename) that container to be able to reuse that name.

처음 실행할 때는 문제가 없었는데 종료 후 다시 실행했더니 이러한 오류창이 발생하였습니다.
답변 부탁드립니다.
감사합니다.

답변: docker run 실행 시 오류가 발생합니다. 관리자 2017년 2월 2일 9:20 오전

이미 한번 실행을 했기 때문에 ``run`` 명령이 아닌 ``start`` 명령을 쓰셔야 합니다. 자세한 내용은 "도커 초간단 사용법"을 참조하세요

linux에서 pull에 문제가 생깁니다. shez*** 2017년 2월 27일 12:55 오후

Pulling repository datascienceschool/rpython

Repository not found

[irteamsu@dev-rpython.ncl ~]$ sudo docker images

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE

--------------------------------------------------------------------------------------------------------------

<none> <none> 782f4961f5e6 7 weeks ago 129.8 MB

답변: linux에서 pull에 문제가 생깁니다. 관리자 2017년 2월 27일 5:36 오후

제가 리눅스에서 docker pull 하면 잘 됩니다.
사용하시는 콘솔에서 인터넷 연결을 확인해 보시고 (호스트에서는 인터넷이 되어도 가상 머신이나 도커 컨테이너에서는 안될 수도 있습니다.)
도커 호스트나 도커 컨테이너 내에서 잘 되는 경우에는 인터넷 도커 허브의 일시적 문제일 수도 있으니 다시 한 번 시도해 보시기 바랍니다.

도커이미지 다운 관련 worl*** 2017년 3월 10일 2:32 오후

먼저 $ docker pull datascienceschool/rpython:latest 입력시에 설치화면이 나타나지 않아
docker run --name=rpython -Pit -p 8888:8888 -p 8787:8787 -p 8022:22 -p 6006:6006 datascienceschool/rpython 입력하였습니다.
맞는 건가요?

답변: 도커이미지 다운 관련 관리자 2017년 3월 12일 11:38 오전

질문을 좀 더 자세하고 정확하게 해 주세요.

사용자에 의해 삭제되었습니다. shez*** 2017년 3월 23일 4:24 오후

사용자에 의해 삭제되었습니다.

도커 설치가 제대로 된 것인지요? 무슨 에러가 있는 것 같은데.... kyou*** 2017년 4월 12일 11:41 오전

$ docker images time="2017-04-12T11:29:39+09:00" level=info msg="Unable to use system certificate pool: crypto/x509: system root pool is not available on Windows"
REPOSITORY TAG IMAGE ID CREATED SIZE datascienceschool/rpython latest 02a0f8cca2d4 21 hours ago 11.8 GB

답변: 도커 설치가 제대로 된 것인지요? 무슨 에러가 있는 것 같은데.... - docker client version 이슈 stee*** 2017년 4월 13일 2:25 오후

docker client에 이슈가 있어 보입니다. 아직 docker toolbox의 버전업은 되지 않았지만, 아래 명령을 사용하면 일단 boot2docker는 버전업이 되네요.

docker-machine upgrade default

docker image 를 c:가 아닌 d:에 다운받아도 실행이 되나요? dcml*** 2017년 4월 17일 1:37 오후

c:용량이 얼마 없어서 d:에 받아서 사용하고 싶은데요?

답변: docker image 를 c:가 아닌 d:에 다운받아도 실행이 되나요? 관리자 2017년 4월 18일 7:55 오전

도커 이미지 저장 위치는 사용자가 마음대로 변경할 수 없습니다.

도커이미지 다운받다가 unauthorized: authentication required 가 뜹니다 love*** 2017년 4월 23일 5:41 오후

도커 설치 후 이미지를 다운받기 위해 'docker pull datascienceschool/rpython:latest' 라는 명령어를 입력하면
'level=info msg="Unable to use system certificate pool: crypto/x509: system root pool is not available on Windows"
latest: Pulling from datascienceschool/rpython'
이런 메시지가 뜬 뒤 다운로드가 시작이 됩니다. 하지만 다운 중 'unauthorized: authentication required' 이런 메시지가 뜨며 다운로드가 중단되고, 'docker images' 명령어로 이미지 확인을 해보면 아무것도 없는 걸로 나옵니다. 해결할 방법을 알려주시면 감사하겠습니다!

답변: 도커이미지 다운받다가 unauthorized: authentication required 가 뜹니다 관리자 2017년 8월 30일 7:20 오후

crypto/x509 관련 오류는 무시하시면 되고 unauthorized: authentication required 오류는 서버측 문제이므로 시간이 지난 후 다시 시도해 주세요.

도커 이미지에 Pytorch 추가하고 싶습니다. dan9*** 2017년 10월 18일 9:25 오전

혹 저 이미지에 Pytorch를 개인적으로 추가할수 있는 방법은 없을까요?

답변: 도커 이미지에 Pytorch 추가하고 싶습니다. 관리자 2017년 10월 18일 2:37 오후

PyTorch 와 TorchVision 은 이미 설치되어 있습니다.

pytorch에서 gpu를 이용해 모델링을 하고 싶은데 어떻게 해야할까요? dan9*** 2017년 10월 30일 5:06 오후

Pytorch를 실습하는데 에러가 있어 질문드립니다.
model = Linear().cuda() 를 이용해 모델링을 하려고 하는데 gpu를 쓸 수 없는 거 같습니다.
제 노트북에 gpu가 있는데 rpython docker image를 이용해 gpu를 쓸 수 있는 방법이 있을까요?
밑이 에러 메세지는 model = Linear().cuda() 를 했을때 뜨는 에러메세지 입니다.
감사합니다.

56 Found no NVIDIA driver on your system. Please check that you
57 have an NVIDIA GPU and installed a driver from
---> 58 http://www.nvidia.com/Download/index.aspx""")
59 else:
60 # TODO: directly link to the alternative bin that needs install

AssertionError:
Found no NVIDIA driver on your system. Please check that you
have an NVIDIA GPU and installed a driver from
http://www.nvidia.com/Download/index.aspx

답변: pytorch에서 gpu를 이용해 모델링을 하고 싶은데 어떻게 해야할까요? 관리자 2017년 10월 31일 10:14 오전

virtualbox는 gpu를 지원하지 않습니다.

답변: 답변: pytorch에서 gpu를 이용해 모델링을 하고 싶은데 어떻게 해야할까요? dan9*** 2017년 10월 31일 3:13 오후

그럼 tensorflow나 pytorch 모두 gpu 버전을 쓰려면 docker로는 할 수 없는 건가요?