在容器内运行 RStudio

张开发
2026/4/5 1:05:52 15 分钟阅读

分享文章

在容器内运行 RStudio
原文towardsdatascience.com/running-rstudio-inside-a-container-e9db5e809ff8?sourcecollection_archive---------5-----------------------#2024-03-09逐步指南在容器内设置 RStudio 服务器并使用你的本地 RStudio 设置https://medium.com/rami.krispin?sourcepost_page---byline--e9db5e809ff8--------------------------------https://towardsdatascience.com/?sourcepost_page---byline--e9db5e809ff8-------------------------------- Rami Krispin·发表于Towards Data Science ·6 分钟阅读·2024 年 3 月 9 日–这是一个逐步指南介绍如何在容器内设置 RStudio 服务器并使用本地 RStudio 设置。我们将使用Rocker RStudio 镜像并展示如何通过docker run命令及其参数进行自定义。到本教程结束时你将能够在容器内启动 RStudio 服务器挂载本地文件夹克隆本地 RStudio 设置颜色主题、代码片段等加载本地 Renviron 设置https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/7758b9511dbe9829b8d18880f155bf26.png一只鲸鱼携带着一个 R 容器由作者使用 Midjourney 创建介绍RStudio 是 R 编程语言的主要 IDE。与其他通用 IDE如 VScode不同RStudio 专为 R 用户及其需求而设计。正是这一点使得 RStudio 在 R 用户中非常受欢迎。默认情况下RStudio 不支持 Docker。运行 RStudio 服务器版本是将 RStudio 设置和运行在容器中的主要方法。这需要在容器内安装并设置服务器这对于某些用户来说可能是一个入门障碍。幸运的是Rocker 项目——R 镜像的主要来源提供了内置且现成可用的带有 RStudio 服务器的镜像。在本教程中我们将使用 Rocker RStudio 镜像该镜像可以在Docker Hub找到。前提条件要跟随本教程并运行以下代码你需要Docker Desktop或任何替代品Docker Hub 账户docker run 命令的基本理解开始使用 RockerRocker 项目是用于构建 R 镜像的主要平台。它提供了多种具有不同 R 环境设置的镜像如 base-r、tidyverse、ML-verse、shiny、geospatial当然还有 RStudio 服务器镜像。所有可用 R 镜像的完整列表可以在 Rocker 的 Docker Hub 页面找到。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/fc1b996c4b0016643c33407f2c1880e5.pngRocker 按下载量排序的热门镜像作者从 Docker Hub 截图我们将使用rocker/rstudio镜像顾名思义它已经安装并准备好使用 RStudio 服务器。通过docker run命令我们可以以交互模式启动该容器并通过浏览器访问 RStudio 服务器。让我们通过docker pull命令拉取镜像开始使用docker pull rocker/rstudio ok Using default tag:latest latest:Pullingfromrocker/rstudio a4a2c7a57ed8:Pull complete d0f9831967fe:Pull complete e78811385d51:Pull complete c61633a20287:Pull complete 832cef14f2fb:Pull complete 8395fbba6231:Pull complete fb53abdcfb34:Pull complete c942edef0d7f:Pull complete Digest:sha256:8e25784e1d29420effefae1f31e543c792d215d89ce717b0cc64fb18a77668f3 Status:Downloaded newer imageforrocker/rstudio:latest docker.io/rocker/rstudio:latest你可以使用docker images命令来验证镜像是否成功下载docker images ok 36s REPOSITORY TAG IMAGE ID CREATED SIZE rocker/rstudio latest 7039fb1622432days ago1.94GB现在让我们使用 Rocker 项目推荐的命令通过docker run命令在容器内启动 RStudiodocker run--rm-ti-e PASSWORDyourpassword-p8787:8787rocker/rstudio在我们打开浏览器上的 RStudio 服务器之前先回顾一下我们之前使用的run参数rm— 容器退出时自动删除容器从终端按control cti— 以交互模式运行容器e— 设置环境变量在这种情况下定义服务器登录密码为yourpasswordp— 定义端口映射。在这种情况下我们将容器的8787端口与本地机器上的8787端口映射执行命令后你可以通过本地的 8787 端口访问 RStudio 服务器例如localhost:8787。这将弹出登录页面你应使用用户名rstudio密码yourpassword在run命令中设置你应该看到以下输出https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e8094acf875b3185fd4cd5beaabec26d.pngRStudio 服务器的初始视图作者截屏注意你可以通过在终端点击controlc来停止运行的容器。哎呀它是临时的默认情况下Docker 容器以临时模式运行。任何在容器内创建并保存的代码或输入都将在终止容器运行时丢失。如果你希望使用 Docker 作为开发环境这样就既不实际也不有用。为了解决这个问题我们将使用volume或v参数它使得可以将本地文件夹挂载到容器的文件系统中。以下代码演示了如何使用 volume 参数将我们执行run命令所在的文件夹例如.与 RStudio 服务器的主文件夹挂载docker run--rm-ti \-v.:/home/rstudio \-e PASSWORDyourpassword \-p8787:8787rocker/rstudiovolume 参数使用以下格式source:target将本地文件夹例如source映射到容器例如target。现在让我们回到浏览器并使用本地地址重新打开 RStudio 服务器 ——localhost:8787。你应该能在 RStudio 文件部分看到挂载到容器的本地文件夹和/或文件。在我的例子中我将挂载我的教程文件夹它包含以下文件夹.├── Introduction-to-Docker ├── awesome-ds-setting ├── forecast-poc ├── forecasting-at-scale ├── lang2sql ├── postgres-docker ├── python ├── rstudio-docker ├── sdsu-docker-workshop ├── shinylive-r ├── statistical-rethinking-2024├── vscode-python ├── vscode-python-template ├── vscode-r └── vscode-r-template如下图所示本地文件夹现在可以通过 RStudio 服务器访问以紫色矩形标出https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/d2d338f2101155644d12e5b19282414a.png带有本地卷的 RStudio 服务器作者提供的截图注意你可以使用卷参数挂载多个卷。例如一个用于你的项目另一个用于包含数据文件夹的文件夹。这使我们能够在容器运行时从本地文件夹中读取和写入文件。克隆你的本地 RStudio 设置在上一部分中我们了解了如何使用卷参数将本地文件夹挂载到容器中。这使我们可以在容器内工作时将代码保存在本地。在本节中我们将学习如何利用卷参数将本地 RStudio 设置与容器中的设置进行挂载。这里的思路是启动容器并使用我们的本地设置运行 RStudio 服务器而无需在每次重新启动容器时更新设置。这包括加载本地设置如颜色主题设置、代码片段、环境变量等。在我们更新docker run命令时使用本地的 RStudio 配置文件夹之前我们需要确定本地和容器中的配置文件夹路径。例如我机器上的路径是~/.config/rstudio并且它包含以下文件夹和文件.├── dictionaries │ └── custom ├── rstudio-prefs.json └── snippets └── r.snippets同样容器中的.config/rstudio文件夹位于/home/rstudio/下。因此我们将使用以下映射$HOME/.config/rstudio:/home/rstudio/.config/rstudio同样地我们希望将.Renviron文件与本地环境变量挂载。.Renviron文件位于本地机器的根文件夹下我们使用相同的方法将本地文件与容器中的文件映射$HOME/.Renviron:/home/rstudio/.Renviron现在让我们将所有设置放在一起并重新启动容器docker run--rm-ti \-v.:/home/rstudio \-v $HOME/.config/rstudio:/home/rstudio/.config/rstudio \-v $HOME/.Renviron:/home/rstudio/.Renviron \-e PASSWORDyourpassword \-p8787:8787rocker/rstudio在将本地 RStudio 配置文件夹与容器中的文件夹挂载之后服务器设置现在与我机器上的本地 RStudio 设置映射在一起https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/9681c75361b6e632fd25354a3f02ddf1.png带有本地设置的 RStudio 服务器作者提供的截图总结本教程重点介绍如何使用docker run命令定制 Rocker 的 RStudio 镜像。我们使用volume参数将本地文件夹挂载到容器的工作目录中。这使我们能够在容器化环境中工作并将工作保存到本地。此外我们使用volume参数将本地的 RStudio 设置克隆到容器中。这使得从本地环境到容器化环境的过渡更加顺畅。随着我们添加和使用更多参数命令可能会变得长且复杂。一旦确定了run设置下一步是通过Docker Compose将其转换为 YAML 文件。除了简化容器启动过程Docker Compose 还使您能够管理更复杂的场景例如启动多个容器。资源RStudio —posit.co/products/open-source/rstudio/Rocker 项目 —rocker-project.org/Docker Hub —hub.docker.com/

更多文章