Docker系列 安装RStudio和R语言
本文最后更新于 186 天前,如有失效请评论区留言。

本博客由ZGOCLOUD大力赞助!如何更快地访问本站?有需要可加电报群获得更多帮助。本博客用什么VPS?创作不易,请支持苯苯!推荐购买本博客的VIP喔,10元/年即可畅享所有VIP专属内容!

前言

非专业人士可忽略此文。

RStudio/R是我最常使用的服务端应用之一。然而,我上一次在Ubuntu安装RStudio/R还是2018-2019年间,当时还是用R 3.6。如今R已经出到至少4.3了,很多东西已经发生了变化。由于较新版本的TCGABiolink包需要R 4.0+才支持,所以我动了重装R语言的心思。当时安装RStudio/R时还不知道docker,印象中直接安装原生版本十分麻烦;因此我想使用docker安装RStudio/R

经过一番了解,我发现已经有了现成的系列解决方案—— Rocker Project – The Rocker Project

msedge_9bYv1lD7Jy

Rocker项目提供了多种版本/类型的RStudio/R版本,挺不错的:

msedge_Xe9k8FJhfG

刚好最近有小伙伴问我能不能搭建一个RStudio给他用。如果我用Docker,可以直接Copy一个容器给他,这样他也省去了不少安装依赖的功夫(往往十分麻烦和费时)。

本文记录一些安装的细节和问题,以泽后人!

测试环境

在自己的物理服务器上运行的:

uname -a # Linux xxx 5.4.0-050400-generic #201911242031 SMP Mon Nov x86_64 x86_64 x86_64 GNU/Linux

docker --version # Docker version 19.03.5, build 633a0ea838

docker-compose --version  # Docker Compose version v2.2.2

准备工作

创建目录:

work=~/docker/rstudio
mkdir -p $work; cd $work

指定一个端口,比如1234。以Ubuntu的防火墙为例:

sudo ufw allow 1234/tcp comment 'rstudio' && sudo ufw reload

配置yaml

我使用的是rocker/tidyverse,因为它包含了tidyverse和devtools的系列依赖包,这对于我这个R语言开发级用户来说是必要的。

version: "3.6"
services:
  rstudio:
    # image: rocker/tidyverse:4.1.0 # 某些系统可能要较低版本才可用
    image: rocker/tidyverse:latest
    container_name: rstudio
    restart: on-failure
    volumes:
      # - ./R:/usr/local/lib/R
      # - ./rstudio:/home/rstudio # 复制出来后重新挂载
      - ./workspace:/home/rstudio/workspace
      - /path01:/path01
      - /path02:/path02
    environment:
      - ROOT=TRUE
      - PASSWORD=your_password # 按需修改
    ports:
      - 1234:8787 # 按需修改
    networks:
      - default

networks:
  default:
    name: rstudio

这里的PASSWORD是登陆RStudio时用的,请自定义一个强密码。/path01/path02则是自定义的宿主机路径,一般用来保存R的Project;它可以直接映射为容器里的同名路径。挺方便的(ฅ´ω`ฅ)

直接上线该stack:

docker-compose up -d

通过docker-compose logs -f观察到该日志后:

rstudio  | [cont-init.d] done.
rstudio  | [services.d] starting services
rstudio  | [services.d] done.

表明服务启动成功。这时先不要使用RStudio,而是直接copy两个重要的文件夹出来:

docker cp rstudio:/home/rstudio $work/; docker cp rstudio:/usr/local/lib/R $work/
sudo chmod -R 777 $work/R $work/rstudio

这时先下线stack:

docker-compose down

将docker-compose.yml中两个volume的#号去除,最终就是这样:

version: "3.6"
services:
  rstudio:
    # image: rocker/tidyverse:4.1.0 # 某些系统可能要较低版本才可用
    image: rocker/tidyverse:latest
    container_name: rstudio
    restart: on-failure
    volumes:
      - ./R:/usr/local/lib/R
      - ./rstudio:/home/rstudio # 复制出来后重新挂载
      - /path01:/path01
      - /path02:/path02
    environment:
      - ROOT=TRUE
      - PASSWORD=your_password # 按需修改
    ports:
      - 1234:8787 # 按需修改
    networks:
      - default

networks:
  default:
    name: rstudio

然后再重新上线:

docker-compose up -d

这两个文件夹是很重要的,其中/usr/local/lib/R就是R的安装目录,里面包含packages和系列设置,映射至宿主机有利于自定义设置,也便于迁移和转移。/home/rstudio则是RStudio的默认工作目录。

NPM & DDNS-Go

不了解Nginx Proxy Manager用法的小伙伴,请看《Docker系列 两大神器NPM和ddns-go的安装》。

ddns-go或者域名托管商后台解析好域名,比如rstudio.hwb0307.com。假设服务器的局域网IP是192.168.1.123

添加一个Proxy Host,反代地址是http://192.168.1.123:1234。可用泛域名的SSL证书。

我在实际使用时这一步偶尔会返回502 Bad Gateway错误,原因未明。以后再搞。

使用

使用时,访问http://192.168.1.123:1234https://rstudio.hwb0307.com,之后有一个登陆界面,输入用户名/密码即可:

msedge_Ay6va3Gnaw

进去后,简单地设置一下布局、字体啥的,就可以正常使用了!和Windows客户端是一样的:

msedge_RmzPLQuyvg

其它设置

隐藏代码边界线

在较新版本的RStudio中,当你显示界面比较大时,会有一条很丑的线:

rstudio_d8FPqkdWWJ

这条线其实是code margin line,它可以这样隐藏:

rstudio_X7HKydg678

你将Margin column设置得大一些估计也行。

更改镜像

我们可以在R的根目录(./etc/Rprofile.site)下定义镜像。在R的根目录下运行下面命令:

cat >$work/R/etc/Rprofile.site<<EOF
# options(repos = c(CRAN = 'https://packagemanager.posit.co/cran/__linux__/focal/2021-08-09'), download.file.method = 'libcurl')
options(repos = c(CRAN = "https://mirrors.tuna.tsinghua.edu.cn/CRAN"), BioC_mirror = "https://bioconductor.org")
# https://docs.rstudio.com/rspm/admin/serving-binaries/#binaries-r-configuration-linux
options(HTTPUserAgent = sprintf("R/%s R (%s)", getRversion(), paste(getRversion(), R.version["platform"], R.version["arch"], R.version["os"])))
EOF

Conda相关

请暂时忽略

# 在conda里安装R
conda install -c conda-forge r-base r-devtools --y

小结

本教程的方案和官网有点不一样。但这样挂载出来后,新旧安装的包都会在R文件夹中,这样只要copy整个$work目录,简单改一下docker-compose.yml的端口号和密码等参数,就可以给其它同事使用了。使用docker就是方便!

---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍

感谢ZGOCLOUD友情赞助 (ฅ´ω`ฅ) 本博客基于m2w创作。版权声明:除特殊说明,博客文章均为Bensz原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。VIP内容严禁转载!由于可能会成为AI模型(如chatGPT)的训练样本,本博客禁止将AI自动生成内容作为文章上传(特别声明时除外)。如有需要,请至学习地图系统学习本博客的教程。加Telegram群可获得更多帮助喔! | 博客订阅:RSS | 广告招租请留言 | 博客VPS | 致谢渺软公益CDN |

评论

  1. Macintosh Safari 16.5
    10 月前
    2023-6-21 20:10:46

    看网上说docker很多镜像站点都已经被墙了

    • 博主
      springwood
      Windows Edge 114.0.1823.51
      10 月前
      2023-6-21 20:11:36

      我没什么感觉 (ฅ´ω`ฅ) 正常使用中

  2. shule
    Windows Chrome 114.0.0.0
    10 月前
    2023-6-21 11:06:20

    赞赞赞!

    • 博主
      shule
      Windows Edge 114.0.1823.51
      10 月前
      2023-6-21 11:06:57

      你平时会用这玩意?

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇