내부 토이 프로젝트 형식으로 동료들과 진행하는 분석 플젝이 하나 있는데, 가용할 서버가 없어서 그냥 남는 데스크탑 pc를 사용하여 DB를 설치하고 그곳에다 협업 분석 환경을 구성하기로 했다.
pc를 빈 깡통으로 만들고 리눅스 서버를 설치하여 사용할 수도 있겠지만 디비는 어차피 동시 접속이 가능하고, 파이썬이나 R 같은 분석 툴도 docker에서 제공하는 이미지를 사용하면 간단하고 쉽게 우분투 환경 구성을 할 수 있기에,
그냥 windows desktop이 깔린 데스크탑에다 docker를 설치하고 컨테이너에 각각의 이미지를 띄운 후, 공용 desktop ip로 (고정 ip) 웹브라우저에서 각자의 계정으로 동시 접속 하여 작업 할 수 있게 끔 했다. 또한 desktop 호스트 pc의 디렉토리를 마운트하여 스크립트나 데이터를 공유할 수 있도록 했다.
1. 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로 설정한다.
그럼 이제 모든 유저들이 웹 환경에서 접속하면서도 하나의 공용 데스크탑 로컬 저장공간을 바라보며 본인이 작업한 스크립트나 함수, 데이터를 저장하고 다른 사람의 것을 불러오고 할 수 있는 협업 환경이 간단하게 구성된다.
파이참이나 주피터를 제공하는 도커 이미지들도 있으니 같은 방식으로 파이썬 분석 환경도 구성할 수 있다.
'Work and Study > Data Analytics' 카테고리의 다른 글
[Docker/R] swap 파일 때문에 wq가 안될때 (0) | 2023.09.06 |
---|---|
[Docker/R] Rocker rstudio에서 Rmysql 라이브러리 설치 안될 때 (0) | 2023.09.04 |
[SQL] Mysql window fucntion으로 median 값 구하기 (Data sampling with median values in SQL) (2) | 2023.08.18 |