应网友
Python开垦者
的要求折腾,但老苏并不是程序员,对这种专业工具并不熟,所以错漏在所难免,见谅;
月初,R
社区大佬人物谢益辉,在个人博客宣布被 RStudio/Posit
离职,表面上只是个人理念和商业发展理念的冲突,但在老苏看来,更像是大环境下的迫不得已。
什么是 RStudio ?
RStudio
是为R
语言设计的一种跨平台集成开发环境。其特色包括可客制化的软件套件视觉化界面与同团队开发的一系列数据可视化与出版工具。RStudio
有免费的自由软件版本及收费的专业版本,并分为在本地电脑上执行的桌面版和与在服务器上执行而可由浏览器连接后使用的服务器版。
RStudio
在群晖上安装本身非常简单,难点在于权限和身份,按官网提供的方式安装,会存在登录不成功的情况,表现为当你用默认用户 rstudio
登录,会显示 Error: Incorrect or invalid username/password
,即便你通过环境变量 DEFAULT_USER
修改用户也无济于事
老苏发现问题可能出在登录 SSH
的用户上,因为老苏习惯用 root
登录群晖,导致容器启动时,进入了 rootless
模式,所以默认用户 rstudio
已经被删除了
rstudio | setting minimum authorised user to 0 (RUNROOTLESS=true)
rstudio | deleting the default user (rstudio) since it is not needed.
如果用其他用户,在群晖中除了使用 sudo
,似乎又没有足够的权限来访问 Docker
守护进程的 Unix
域套接字文件 /var/run/docker.sock
,会显示下面的错误
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create?name=rstudio": dial unix /var/run/docker.sock: connect: permission denied.
而当你使用 sudo
后,容器还是会进入了 rootless
模式,所以老苏姑且认为,在群晖上安装的 RStudio
服务器版,可能只能使用 root
用户登录,而不能使用默认用户 rstudio
,或者自己设定的其他用户
当然,最好的办法还是,当遇到登录失败时,进日志看看容器工作在什么模式下
rootless
模式:默认用户名为 root
;rootless
模式:默认用户名为 rstudio
;在群晖上以 Docker 方式安装。
在注册表中搜索 rstudio
,选择第一个 rocker/rstudio
,版本选择 latest
。
本文写作时,
latest
版本对应为4.3.2
;
在 docker
文件夹中,创建一个新文件夹 rstudio
,并在其中建两个子文件夹 config
和 workspace
文件夹 | 装载路径 | 说明 |
---|---|---|
docker/rstudio/config | /home/rstudio/.config/rstudio | 存放设置 |
docker/rstudio/workspace | /home/rstudio/workspace | 存放代码 |
本地端口不冲突就行,不确定的话可以用命令查一下
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 | 容器端口 |
---|---|
8788 | 8787 |
可变 | 值 |
---|---|
TZ | 设置时区,默认值为 Etc/UTC |
PASSWORD | 设置用户密码 |
更多环境变量请参考官方的文档:https://rocker-project.org/images/versioned/rstudio.html#environment-variables
如果你熟悉命令行,可能用 docker cli
更快捷
# 新建文件夹 rstudio 及子目录
mkdir -p /volume1/docker/rstudio/{config,workspace}
# 进入 rstudio 目录
cd /volume1/docker/rstudio
# 运行容器
docker run -d \
--restart unless-stopped \
--name rstudio \
-p 8788:8787 \
-v $(pwd)/config:/home/rstudio/.config/rstudio \
-v $(pwd)/workspace:/home/rstudio/workspace \
-e TZ=Asia/Shanghai \
-e PASSWORD=123456 \
rocker/rstudio
也可以用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
version: '3'
services:
rstudio:
image: rocker/rstudio
container_name: rstudio
restart: unless-stopped
ports:
- 8788:8787
volumes:
- ./config:/home/rstudio/.config/rstudio
- ./workspace:/home/rstudio/workspace
environment:
- TZ=Asia/Shanghai
- PASSWORD=123456
然后执行下面的命令
# 新建文件夹 rstudio 及子目录
mkdir -p /volume1/docker/rstudio/{config,workspace}
# 进入 rstudio 目录
cd /volume1/docker/rstudio
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d
在浏览器中输入 http://群晖IP:8788
就能看到登录界面
用默认用户:rstudio
,大概率会遇到登录失败,显示 Error: Incorrect or invalid username/password
密码就是我们环境变量
PASSWORD
中设定的值
如果日志中显示容器工作在 rootless
,用户需改为 root
,密码依然是我们环境变量 PASSWORD
中设定的值
现在可以开始使用了
rocker-org/rocker-versioned2: Run current & prior versions of R using docker. rocker/r-ver, rocker/rstudio, rocker/shiny, rocker/tidyverse, and so on.
地址:https://github.com/rocker-org/rocker-versioned2
Rocker Project - The Rocker Project
地址:https://rocker-project.org/
Administration Guide - PAM Authentication
地址:https://docs.posit.co/ide/server-pro/authenticating_users/pam_authentication.html
Running RStudio Server with Docker - Dave Tang’s blog
地址:https://davetang.org/muse/2021/04/24/running-rstudio-server-with-docker/