jammy, ubuntu2204, jammy-2025.04.2, ubuntu2204-2025.04.2Posit Package Manager(前身为 RStudio Package Manager)是一个仓库管理服务器,用于在团队、部门或整个组织中组织和集中管理 R 包。它提供 CRAN 的离线访问、自动化 CRAN 同步、共享本地包、限制包访问、跨仓库查找包等功能。为使用 R 的团队提供可靠且一致的包管理体验。
此镜像可能引入破坏性变更,因此我们建议:
{操作系统} 标签,以避免意外的版本变更过时的镜像将随着产品版本更新定期从 DockerHub 中移除。请计划定期更新或使用自己构建的镜像。
这些镜像旨在作为满足您需求的起点。建议创建此仓库的分支,以便在合并我们所做更改的同时,进行自己的安全扫描、使用基础操作系统或其他自定义更改。我们提供了构建说明用于这些情况。
Package Manager 镜像默认使用此处文档中所述的 No Sandbox 选项,如果您需要为与 Git 相关的包构建配置更安全的选项,我们建议使用启用了沙箱的系统。
安全注意: 这些镜像是基于产品版本发布/更新时的构建环境按原样提供的。在生产使用前应进行审查和更新。如果您的组织对 CVE/漏洞严重性级别有特定的安全要求,您应计划使用构建说明克隆此仓库,并根据您特定的内部安全标准重建这些镜像。
以下是使用产品许可证密钥在 Docker 中本地运行 Package Manager 的简单示例:
bash# 替换为有效的许可证 export RSPM_LICENSE=XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX # 不使用持久化数据并使用默认配置运行 docker run -it \ -p 4242:4242 \ -e RSPM_LICENSE=$RSPM_LICENSE \ rstudio/rstudio-package-manager:ubuntu2204
打开 http://localhost:4242 访问 Posit Package Manager UI。
运行 Posit Package Manager Docker 镜像需要有效的 Posit Package Manager 许可证。
此容器包含:
注意:Package Manager 目前对 R 版本不是很挑剔。很少需要更改 R 版本。
Posit Package Manager 通过 /etc/rstudio-pm/rstudio-pm.gcfg 文件进行配置。您应该将此文件作为卷从主机挂载。重启容器后更改将生效。
确保配置文件已配置 HTTP.Listen 字段。完整的示例配置文件可在 package-manager/rstudio-pm.gcfg 查看。
为了在容器重启之间持久化 Package Manager 数据,需将 Server.DataDir 选项配置为指向持久卷。包含的配置文件期望主机机器或 Docker 编排系统提供的持久卷在 /var/lib/rstudio-pm 可用。如果您希望将其移动到不同的路径,可以更改 Server.DataDir 选项。
ini[Server] DataDir = /mnt/rspm/data
使用容器需要有效的 Posit Package Manager 许可证。您可以通过三种不同方式设置许可证:
RSPM_LICENSE 环境变量设置为有效的许可证密钥RSPM_LICENSE_SERVER 环境变量设置为有效的许可证服务器/端口/var/lib/rstudio-pm/*.lic 或使用 RSPM_LICENSE_FILE_PATH 指定的其他路径注意: 离线安装需要使用浮动许可证服务器、许可证文件或手动干预激活实例的自定义镜像。
容器将自动在 /var/lib/rstudio-pm/*.lic 或 /home/rstudio-pm/.rstudio-pm/*.lic 查找许可证文件,如果存在,将尝试使用它进行激活。此示例使用绑定挂载从主机提供许可证文件。
bashdocker run -it --privileged \ -p 4242:4242 \ --mount type=bind,ro,src=<许可证文件路径>,dst=/var/lib/rstudio-pm/rstudio-pm.lic \ rstudio/rstudio-package-manager:ubuntu2204
或者,可以使用 RSPM_LICENSE_FILE_PATH 环境变量提供容器中许可证文件的路径。如果提供,容器将尝试从给定路径查找并激活许可证。
bashdocker run -it --privileged \ -p 4242:4242 \ -e RSPM_LICENSE_FILE_PATH=/opt/license.lic \ --mount type=bind,ro,src=<许可证文件路径>,dst=/opt/license.lic \ rstudio/rstudio-package-manager:ubuntu2204
如果许可证文件未能成功激活,容器在大多数情况下将无法启动。您仍然可以通过对 license-manager 二进制文件运行 status 命令来验证容器的许可状态。
根据提供许可证文件的方式,License-File 字段可能是 /var/lib/rstudio-pm/*.lic 或 /home/rstudio-pm/.rstudio-pm/*.lic。只要 Status 字段显示 Activated,任一路径都应该有效。
bash$ docker exec -it <容器名称> /opt/rstudio-pm/bin/license-manager status TTY detected. Printing informational message about logging configuration. Logging configuration loaded from '/etc/rstudio/logging.conf'. Logging to '/var/log/rstudio/rstudio-server/license-manager.log'. RStudio License Manager 2024.04.2+764.pro1 -- License file status -- Status: Activated Product-Key: XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX Has-Key: Yes Has-Trial: No Tier: Tier Name SKU-Year: 2024 Enable-Launcher: 1 Users: 0 User-Activity-Days: 365 Shiny-Users: 0 Allow-APIs: 1 Anonymous-Servers: 0 Unrestricted-Servers: 0 Licensee: Company Name License-File: /home/rstudio-pm/.rstudio-pm/rstudio-pm.lic Expiration: YYYY-MM-DD HH:mm:ss Days-Left: XXX License-Engine: 1.0.0.0 License-Scope: System -- Local license status -- Trial-Type: Verified Status: Expired Has-Key: No Has-Trial: Yes License-Scope: System License-Engine: 4.4.3.0 -- Floating license status -- License server not in use.
也可以通过设置 RSPM_LICENSE 环境变量使用许可证密钥激活容器。
bash# 替换为有效的许可证 export RSPM_LICENSE=XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX # 不使用持久化数据并使用外部配置运行 docker run -it --privileged \ -p 4242:4242 \ -e RSPM_LICENSE=$RSPM_LICENSE \ rstudio/rstudio-package-manager:ubuntu2204
如果可能,生产环境应避免使用许可证密钥激活,而应使用许可证文件,因为当容器未正常停止时,存在许可证激活泄露的风险。有关许可证密钥问题的更多详细信息,请参见下面的容器中产品许可的注意事项部分。
| 变量名 | 描述 | 默认值 |
|---|---|---|
RSPM_LICENSE | Posit Package Manager 的许可证密钥,格式应为:XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX | 无 |
RSPM_LICENSE_SERVER | 浮动许可证服务器,格式应为:my.url.com:port | 无 |
| 变量 | 描述 |
|---|---|
4242 | Posit Package Manager 的默认 HTTP 端口 |
bash# 替换为有效的许可证 export RSPM_LICENSE=XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX # 不使用持久化数据并使用外部配置运行 docker run -it \ -p 4242:4242 \ -v $PWD/package-manager/rstudio-pm.gcfg:/etc/rstudio-pm/rstudio-pm.gcfg \ -e RSPM_LICENSE=$RSPM_LICENSE \ rstudio/rstudio-package-manager:ubuntu2204
bash# 替换为有效的许可证 export RSPM_LICENSE=XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX # 使用持久化数据和外部配置运行 docker run -it \ -p 4242:4242 \ -v $PWD/data/rspm:/var/lib/rstudio-pm \ -v $PWD/package-manager/rstudio-pm.gcfg:/etc/rstudio-pm/rstudio-pm.gcfg \ -e RSPM_LICENSE=$RSPM_LICENSE \ rstudio/rstudio-package-manager:ubuntu2204
打开 http://localhost:4242 访问 Posit Package Manager UI。
要创建仓库,您需要直接访问容器并执行一些命令。为此,请使用 docker ps 找到 RSPM 的容器 ID 并运行:
bashdocker exec -it {container-id} /bin/bash
以下是添加本地包的完整示例:
在主机系统上创建包 tarball,例如 data/pwb/rstudio/demo1_0.1.0.tar.gz
使用 docker cp 将 tarball 复制到容器的 /tmp 目录:
bash# 查找运行中的 package-manager 容器的容器 ID docker ps # 替换 b8ae944b7f2d 为您的容器 ID docker cp data/pwb/rstudio/demo1_0.1.0.tar.gz b8ae944b7f2d:/tmp
bashroot@1b6f4f5fc669:/# rspm create source --name=demopkgs Source 'demopkgs': Type: Local root@1b6f4f5fc669:/# rspm add --source=demopkgs --path='/tmp/demo1_0.1.0.tar.gz' Added package '/tmp/demo1_0.1.0.tar.gz'. root@1b6f4f5fc669:/# rspm create repo --name=demopkgs --description="demo package repo" Repository: demopkgs - demo package repo - R root@1b6f4f5fc669:/# rspm subscribe --repo=demopkgs --source=demopkgs Repository: demopkgs Sources: --demopkgs (Local)
R> install.packages("demo1", repos = "http://localhost:4242/demopkgs/latest") Installing package into ‘/home/rstudio/R/x86_64-pc-linux-gnu-library/3.6’ (as ‘lib’ is unspecified) trying URL 'http://localhost:4242/demopkgs/latest/src/contrib/demo1_0.1.0.tar.gz' Content type 'application/x-gzip' length 859 bytes ================================================== downloaded 859 bytes * installing *source* package ‘demo1’ ... ** using staged installation ** R ** byte-compile and prepare package for lazy loading ** help *** installing help indices ** building package indices ** testing if installed package can be loaded from temporary location ** testing if installed package can be loaded from final location ** testing if installed package keeps a record of temporary installation path * DONE (demo1) The downloaded source packages are in ‘/tmp/RtmpRVTKFG/downloaded_packages’
创建 docker-compose.yml 文件:
yamlversion: '3.8' services: rspm: image: rstudio/rstudio-package-manager:ubuntu2204 container_name: rspm restart: unless-stopped ports: - "4242:4242" environment: - RSPM_LICENSE=XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX volumes: - ./package-manager/rstudio-pm.gcfg:/etc/rstudio-pm/rstudio-pm.gcfg - rspm_data:/var/lib/rstudio-pm stop_grace_period: 2m volumes: rspm_data:
使用以下命令启动服务:
bashdocker-compose up -d
注意:本节不适用于使用许可证文件的激活。
当前在容器中使用我们的产品存在一个已知的许可问题。如果容器未被正常停止,许可证停用步骤可能会失败或被跳过。未能停用许可证可能导致"许可证泄露",即产品激活被耗尽,且无法使用传统方法停用,因为容器中的激活状态已丢失。
为避免"泄露"许可证,我们建议用户不要强制终止容器,并对 docker run 和 docker stop 命令分别使用 --stop-timeout 120 和 --time 120。这有助于确保停用脚本有足够的时间正常运行。
在某些情况下,可能难以或无法避免硬终止(例如,电源故障、主机上的严重错误)。不幸的是,这些情况中的任何一种都可能导致许可证泄露激活。为了帮助防止这些情况下的许可证泄露,用户可以将以下目录挂载到持久存储,以在容器重启时保留许可证状态数据。这些目录因产品而异。
/home/rstudio-pm/.local/home/rstudio-pm/.prof/home/rstudio-pm/.rstudio-pm/home/rstudio-pm/.TurboFloat请注意,这些目录中创建的文件是硬件锁定的,不能在主机之间传输。由于硬件指纹算法的特性,对主机或容器的任何低级更改都可能导致现有许可证状态文件失效。为避免此问题,我们建议在更改主机上的任何硬件或固件(例如,升级网卡或更新 BIOS)或容器(例如,更改使用的网络驱动程序或分配的 CPU 核心数)之前,优雅地关闭产品容器并允许其停用。
虽然保留许可证状态数据可以帮助避免重启时的许可证泄露,但这并不能保证。如果您在许可证方面遇到问题,请随时联系 Posit 支持。
虽然这些解决方案都不能完全消除问题,但它们应该有助于缓解问题。我们仍

来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429