본문 바로가기

Work and Study/Data Analytics

[Docker/R] rocker rstudio로 분석 협업 환경 설정하기

내부 토이 프로젝트 형식으로 동료들과 진행하는 분석 플젝이 하나 있는데, 가용할 서버가 없어서 그냥 남는 데스크탑 pc를 사용하여 DB를 설치하고 그곳에다 협업 분석 환경을 구성하기로 했다.

pc를 빈 깡통으로 만들고 리눅스 서버를 설치하여 사용할 수도 있겠지만 디비는 어차피 동시 접속이 가능하고, 파이썬이나 R 같은 분석 툴도 docker에서 제공하는 이미지를 사용하면 간단하고 쉽게 우분투 환경 구성을 할 수 있기에,

그냥 windows desktop이 깔린 데스크탑에다 docker를 설치하고 컨테이너에 각각의 이미지를 띄운 후, 공용 desktop ip로 (고정 ip) 웹브라우저에서 각자의 계정으로 동시 접속 하여 작업 할 수 있게 끔 했다. 또한 desktop 호스트 pc의 디렉토리를 마운트하여 스크립트나 데이터를 공유할 수 있도록 했다.

1. docker desktop 설치하기

docker desktop 설치 참고 링크

2. rocker rstudio 이미지 실행하기

1) docker desktop을 실행한다.

 

2) cmd 창을 연다.

 

2) 이미지에 대한 마운트는 최초 이미지를 run/pull 할 때만 가능한 것 같아서 내가 bind mount할 로컬 디렉토리로 이동부터 해둔다.


(도커 rstudio 이미지에 마운트 시킬 rstudio_folder라는 폴더를 로컬에 미리 하나 생성해 두었다. 미리 이동하는 이유는 우분투 환경인 도커와 윈도우인 로컬 간의 디렉토리 표기법이 꼬일 수 있어 걍 이동하는 게 더 편해서...ㅎㅎ)

 

cd C:\Users\Desktop\rstudio_folder

3) 다음엔 다음의 명령어를 사용하여 이미지를 실행한다.

docker run -d -p 8787:8787 --name rstudio -e ROOT=true -e PASSWORD= -v %cd%:/home rocker/rstudio

-p: 포트를 정해주는 건데 rocker rstudio는 8787이 기본이다.

 

--name: 알아보기 쉬운 컨테이너 명을 지어주면 된다.

 

-e ROOT=true: 기본으로 생성되는 user인 'rstudio' 유저를 root 사용자로 지정하는 것이다. 그래야 나중에 rstudio 터미널에서 추가로 유저 생성이 가능하다.

 

-e PASSWORD: 패스워드를 지정한다.


패스워드를 지정하지 않으면 아이디와 똑같은 값이 기본으로 패스워드로 설정된다.

 

-v: 현재 디렉토리인 %cd%를 콜론 뒤에 있는 이미지의 위치에 bind mount 하겠다는 것이다.

 

rstudio에서는 사용자가 추가되면 home이라는 디렉토리 하위에 각각의 user 아이디명으로 된 폴더가 생겨서 기본 작업 공간이 그곳으로 설정되는데, 이미지를 pull하고 나중에 그 각각의 유저들이 사용하는 하위 디렉토리에 로컬 호스트 위치를 마운트 하려했더니 permission denied가 일어나서 그냥 애초에 한번 모든 유저들의 최상위 폴더인 home에다가 마운트를 해준다.

 

(만약 작업공간 권한 계층이 필요하다면 -e와 -v 명령어를 각 유저마다 사용하여 유저 생성과 마운트를 한번에 할 수 있을 듯 하다.)

 

rocker/rstudio: 컨테이너로 불러울 이미지 명이다.

3. docker desktop에서 컨테이너가 만들어졌는지 확인하고, ▶ 아이콘을 눌러 실행시킨다.

4. 웹브라우저에서 호스트 ip + 포트 8787을 (10.xxxx.xxx.xx:8787)을 주소창에 입력 후 접속

5. root 유저인 rstudio로 접속하고 터미널로 이동하여 adduser 명령어로 추가 계정 생성

6. 모든 유저들의 working directory를 아까 마운트 해둔 로컬 디렉토리 위치로 설정

 

상위 home으로 이동이 안될 시엔 '/.'로 이동하면 된다.

setwd()를 사용하여 기본 wd로 설정한다.

그럼 이제 모든 유저들이 웹 환경에서 접속하면서도 하나의 공용 데스크탑 로컬 저장공간을 바라보며 본인이 작업한 스크립트나 함수, 데이터를 저장하고 다른 사람의 것을 불러오고 할 수 있는 협업 환경이 간단하게 구성된다.

파이참이나 주피터를 제공하는 도커 이미지들도 있으니 같은 방식으로 파이썬 분석 환경도 구성할 수 있다.