R | Docker | Rocker | 윈도우즈에서 도커로 Rstudio 환경 사용하기 | tidyverse
Jan 22, 2024
R (윈도우즈 Windows 10) | 프로그래밍 언어 R 설치하기와
R (우분투 리눅스 Ubuntu Linux) 설치하기 | Installing R, R packages (e.g., tidyverse) and Rstudio on Ubuntu Linux (Zorin, Mint) 그리고 R | WSL2 tidyverse | WSL2에서 tidyverse 설치하기에서 R의 윈도우즈 설치 및 리눅스 설치에 대하여 정리한 바 있다.
그런데 이러한 설치의 순서와 과정은 다소 생소하며 어려울 수도 있으며 혹시라도 과정 중 어느 것을 빠뜨리거나 하면 에러가 발생할 소지도 있다.
또한, 리눅스의 발전과 함께 버젼이 올라가서 앞서 정리한 내용과 다소 차이가 생겨날 수도 있으니 ‘R을 사용하고자 하여도 설치가 복잡하고 귀찮아서 못하겠다.’ 싶은 생각이 들 수도 있겠다.
정상적으로 다 설치를 완료하였다고 하여도 알 수 없는 이유(윈도우 사용자명이 한글로 되어 있는 등 사소한 것)로 R을 구동할 때마다 Warning massage 또는 Error massage를 나타낸다면 R을 켜는 것이 얄미울 수도 있고 해당 오류사항을 바로잡고자 구글에서 찾다가 진을 다 빼버리는 수도 있다.
여기서 언제 어디서나 바로 설치하여 사용할 수 있는 도커(Docker)가 해결책으로 생각해 볼 수 있으며 이러한 오픈소스 생태계의 노력은 Rocker (Docker Containers for the R Environment, https://rocker-project.org/ )의 존재를 보아 어제 오늘 일이 아닌 것처럼 꽤나 오래전부터 진행되어 오고 있었던 것으로 짐작할 수 있다.
도커(Docker)를 사용해야 하는 이유1
리눅스 컨테이너 기반 오픈소스 가상화 플랫폼 Docker
다음과 같은 Docker를 사용해야 하는 이유를 나열할 수 있으나 가장 큰 이유는 직접 설치하기가 어렵기 때문이며 부수적인 이유로는 R이 데비안 리눅스를 근본으로 탄생하였으므로 우분투 리눅스 환경과 궁합이 좋기 때문이다.
- 운영체제부터 R과 LaTeX팩키지 버젼 같은 세부적인 사항과 연관된 의존성 문제를 풀수 있게 해 준다.
- 분석결과가 재현가능함을 확실히 보장한다.
- 이식성(Portability): 도커 컨테이너를 쉽게 또다른 컴퓨터에 보낼 수 있기 때문에, 본인 컴퓨터에서 거의 모든 것을 설정하고 작업준비를 완료한 다음에 훨씬 더 강력한 슈퍼컴퓨터에서 분석코드를 실행시킬 수 있다.
- 공유성(Sharability): 도커 컨테이너를 누구에게나 전달할 수 있다.
WSL2 설치
https://learn.microsoft.com/ko-kr/windows/wsl/install
최신 Docker는 WSL2에서 작동한다. Docker를 설치하기에 앞서 WSL2를 우선 설치한다.
Windows Powershell을 관리자 권한으로 열어서 wsl --install
명령어를 입력한다.
윈도우 10 버전 2004(빌드 19041 이상) 이상이나 윈도우 11에서는 wsl --install
명령어 하나로 WSL2를 설치할 수 있다.
wsl --install
Docker Desktop 다운로드 및 설치
윈도우 도커 설치 URL https://docs.docker.com/desktop/install/windows-install/
-
Download for Windows를 클릭해 Docker Desktop for Windows를 다운로드 받는다.
-
다운로드 받은 Docker Desktop Installer.exe를 실행하면 사용자 계정 컨트롤이 나타난다. 설치를 진행하려면 ’예’를 클릭.
-
안내에 따라 설치를 진행한다. 설치 중간에 Configuration이 나타나면 둘(첫 번째 옵션은 WSL 관련, 2번째 옵션은 바탕화면에 아이콘 추가할지 여부) 다 체크하고 설치를 진행한다.
-
설치가 끝나면 Installation succeeded 메시지가 나타난다. 시스템 상태에 따라서 재시작이나 로그아웃을 해야하는 경우도 있다. Close 버튼을 클릭해 인스톨러를 종료.
-
바탕화면의 Docker Desktop 아이콘이나 Windows + S로 Docker를 검색해서 Docker Desktop을 실행할 수 있다. Docker Desktop을 실행한다.
Tidyverse를 포함한 Rstudio 컨테이너 생성
작업 디렉토리(폴더)를 생성한다. 해당 디렉토리는 향후 도커 Rsudio의 Home과 연동하여 파일을 옮겨 넣거나 빼내는 통로 역할을 하게 된다. 이를 바인드 마운트2라고 부른다.
바인드 마운트 디렉토리에서 PowerShell을 실행한다.
예를들어, C:/Rstudio_Docker 경로를 도커와 윈도우즈 운영체제가 상호 소통하는 통로로써 사용하고자 한다면 이와 같이 해당 경로에 프롬프트 커서가 위치하도록 한다.
Docker Command를 사용하여 Tidyverse를 포함한 Rstudio 컨테이너를 생성한다. 다음은 Rstudio Server의 비밀번호가 pass이고 포트가 88883인 Docker Command의 예시이다.
docker run -d -p 8888:8787 -v ${pwd}:/home/rstudio -e PASSWORD=pass --name rstudio-docker rocker/tidyverse
이 도커 명령어를 실행하면 도커허브에서 다운로드 받아서 실행된다.
웹브라우저에서 Rstudio Server 접속
도커 명령어 실행이 완료되면 백그라운드에서는 도커 컨테이너가 실행 상태(Running)가 된다. 향후에는 이 컨테이너를 삭제하지 않았다면 도커 데스크탑의 Containers에서 Actions 버튼을 눌러 실행 상태(Running)가 되도록 하면 바로 실행된다.
도커 컨테이너가 실행 상태(Running)일 때 웹브라우저에서 localhost:8888 주소에 접속하면 Rstudio 로그인 화면이 나타난다.
- Username: rstudio
- Password: pass
Sign In 하고 Rstudio를 사용한다.
For Further Exploration
R TimeZone 설정
Rocker image를 사용하여 Docker Container를 활성화 하여 R을 사용하는 것은 복잡하고 많은 설치 과정을 거치지 않고도 우분투 환경의 R과 Rstudio 환경을 누릴 수 있어서 좋다. 그러나 Rocker image는 기본적으로 시간대(TimeZone) 설정이 UTC4로 되어 있다.
대한민국 서울에서 시계열 분석 같은 것을 하기 위하여는 한국 시간대로 설정 해 두는 것이 필요할 수도 있다.
R에서 다음 명령어를 Console에 입력하면 시간대 설정이 된다.
Sys.setenv(TZ='Asia/Seoul')
Sys.timezone()
Sys.time()
- TimeZone을 아시아 서울로 환경설정 한다.
- 현재 R이 사용하고 있는 TimeZone을 확인한다.
- 현재 R에 설정된 날짜와 시간을 확인한다.
이러한 코드를 매번 입력하는 것은 해당 환경을 매일 반복해서 사용한다면 아주 불편한 반복이 될 수가 있다.
따라서 .Rprofile 파일을 생성하여 Rstudio를 켤 때마다 매번 입력하는 것처럼 적용할 수 있다.
file.edit('~/.Rprofile')
- 사용자 HOME 경로(~) 에 .Rprofile 파일을 생성한다.
.Rprofile 파일에 다음을 입력하여 저장한다.
Sys.setenv(TZ='Asia/Seoul')
Sys.timezone()
Sys.time()
이제 Rstudio를 켤 때마다 TimeZone 설정이 되고 해당 TimeZone과 날짜 및 시간을 확인한다.