本项目包含INWT项目的Docker配置,展示了将R应用部署到生产环境的最佳实践。基于rocker项目构建(感谢rocker团队的出色工作),提供多种预配置镜像,适用于R应用开发与部署。镜像托管于:
通过以下命令拉取并启动镜像:
docker pull inwt/r-base:3.4.4 docker run -it inwt/r-base:3.4.4
R功能强大但缺乏标准化部署模型。与Java通过JVM抽象操作系统不同,R应用部署常受运行环境影响。Docker提供一致的运行时环境,将R应用打包为可分发单元,实现跨系统部署。
容器特性:
Docker镜像通过Dockerfile构建,包含构建过程中的所有命令。建议基于上述预定义镜像构建,而非从零开始。示例Dockerfile:
FROM inwt/r-batch:3.4.4 ADD . . RUN rm -vf .Rprofile && \ installPackage CMD ["Rscript", "inst/R_Code/someScript.R"]
FROM:指定基础镜像ADD:将文件/目录复制到镜像文件系统RUN:执行命令(此处删除.Rprofile以避免覆盖预配置的CRAN仓库和库路径,然后安装R包)CMD:容器默认启动命令(此处通过Rscript执行脚本)更多配置选项参见Dockerfile参考文档,建议遵循Dockerfile最佳实践。
.dockerignore用于排除构建非必需文件,类似.Rbuildignore或.gitignore,减小构建上下文大小。示例:
lib* deps largeFile.csv
详细说明参见.dockerignore文档。
本地开发的推荐命令:
docker build --pull -t tmp <Dockerfile路径> && docker run --rm -it --network host tmp
详细参数说明:
docker build \ --pull \ # 拉取FROM中镜像的最新版本 -t tmp \ # 为镜像指定标签"tmp" <Dockerfile路径> \ # 例如"."(当前目录) && docker run \ --rm \ # 容器运行完成后自动删除 -it \ # 交互式会话,可进入控制台 --network host \ # 容器使用主机网络(IP与主机一致) tmp # 镜像名称(对应标签)
上述命令将构建镜像并执行Dockerfile中CMD定义的默认命令。
docker ps # 显示所有运行中的容器 docker logs <container> # 查看容器输出日志 docker attach <container> # 连接到运行中的容器 docker run -it --rm <image> bash # 在容器中启动bash(构建失败时调试常用) docker exec -i -t <container> /bin/bash # 在已运行容器中打开新bash终端
docker build -t example-app ./examples/app docker run --rm -p 3838:3838 example-app # 映射3838端口 docker run --rm --network host example-app # 使用主机网络
docker build -t example-batch ./examples/batch docker run --rm example-batch # 运行默认命令 docker run --rm example-batch Rscript main.R # 执行指定脚本 docker run --rm example-batch Rscript main.R arg1 arg2 # 带参数执行脚本
无需本地Dockerfile(但使用本地Dockerfile更稳定),可直接将容器作为运行时环境执行R CMD check。通过-v挂载目录(授予写权限):
cd /path/to/your/package docker run --rm -v $PWD:/app --user `id -u`:`id -g` inwt/r-batch:3.4.4 check docker run --rm -v $PWD:/app --user `id -u`:`id -g` inwt/r-batch:3.5.1 check
(原文未提供详细内容,此处保留结构)
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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