rstat!

R은 좋은 랭귀지다. 직관적인 문법 그리고 무엇보다도 ggplot의 환상적인 구조는 한번 체험하면 잊기 힘들다. 그런데 요즘 wsl 2를 쓰면서 RStudio를 켜는 일이 부쩍 줄어들었다.

장인은 도구를 안가리지만, 나같은 범인에게는 도구가 중요하다. wsl 2에 어떻게 하면 R을 편하게 얹어서 쓰지? 잠시 고민해보았다. 물론 wsl 2에 linux용 R을 깔아쓰면 될 일이다. 하지만 뭔가 깔끔하지 않다. 도커를 써볼까?

Here Comes the rocker!

문득 예전에 클라우드에 linux + Rstudio server를 쓰던 생각이 났다. 클라우드에 RStudio를 세팅하면 웹브라우저를 통해 RStudio의 기능을 100% 쓸 수 있다.

같은 방식을 그냥 wsl 2에 적용하면 되지 않을까? 이러한 용처를 예상했는지 R 버전, RStudio, tidyverse, 그리고 퍼브리싱 도구까지 필요에 따라 단계별로 묶어둔 docker image가 있더라. 이름하여 rocker!

https://www.rocker-project.org/

정말 환상적이고 고마운 프로젝트이다.

Script

  • wsl 2를 가동한다.
  • docker edge edition 2.2 이상이 설치되었다고 가정한다.
  • rocker의 버전은 다음과 같다.

https://github.com/rocker-org/rocker-versioned

  • r-ver: R 프로그램과 핵심 유틸
  • rstudio: r-ver + RStudio
  • tidyverse: rstudio + tidyverse
  • verse: tidyverse + 퍼브리싱 툴

적당한 이미지를 끌어다가 올리면 되겠다.

Best practice

sudo docker run -d -p 8787:8787 -v /mnt/|your-local|:/home/rstudio -e DISABLE_AUTH=true rocker/tidyverse
  • 위 페이지에 보면, 도커의 여러가지 실행 옵션이 있다. 필요대로 참고하시면 되겠다.
  • 위 스크립트만 간단하게 설명해보자.
    • 위 스크립트는 로그인을 생략한 버전이다. 공용 PC가 아니라면, 로컬에서 돌리는 데 로그인이 필요하지는 않을 듯 싶다.
    • 위 스크립트는 tidyverse를 태우는데 wsl 2가 마운트한 로컬 폴더 중 rocker와 연결시킬 폴더를 지정한다. 이 윈도 폴더가 콘테이너 내에 /home/rstudio로 매핑된다.
  • 브라우저에서 localhost:8787 또는 http://127.0.0.1:8787을 치면 Rstudio가 돌아간다.
    • 크롬의 설정 → 도구 더 보기 → 바로가기 만들기를 클릭하면 바탕화면에 아이콘이 생성된다. RStudio 로컬 버전과 다를 바가 없다.

Customizing

브라우저에서 돌아가지만 깔아쓰는 RStudio와 다를 바가 전혀 없다!

  • RStudio에서 가능한 커스터마이징이 모두 가능하다. - 컨테이너를 내렸다 올리면 어떨까? 패키지 설치 등 앱에 관련된 사항은 초기화된다. 하지만 RStudio 관련 사항은 웹 브라우저에 남는다. 아래는 내가 쓰는 레이아웃이다.

Good Enough?

윈도에서 쓰는 R + RStudio 조합보다 좋더라.

  • 인코딩 문제 없다!
  • 패키지 깔 때 권한 이슈 없다.
  • 퍼포먼스가 원도보다 낫더라.
  • 윈도의 로컬 폴더와 연결되어 있으니, 코드는 윈도에 저장하고 관리하면 된다.
  • 패키지 깔다가 문제가 생기면 그냥 도커 내리면 그만이다.

  • 그림처럼 3개의 컨테이너가 돌고 있다. 필요한 컨테이너에 연결해서 작업하고 문제가 생기면 컨테이너를 내리거나 지우면 그만이다. wsl 2는 찐이다. 마소 짱!