如何在服务器中使用docker搭建Rstudio分析环境

如何在服务器中使用docker搭建Rstudio分析环境

首先确保docker已经安装成功并且成功运行

# docker命令在root权限下运行,本教程以centos 9为例
# 查看docker详细信息
docker info

image-20240905212426100

成功安装则会显示如图的详细docker信息

# 查看docker是否运行
systemctl status docker

image-20240905213033177

一、使用dockerhub已有镜像进行部署

1、docker拉取镜像

docker中查找所需的docker镜像rstudio:此处以 rocker/rstudio:latest为例

docker pull rocker/rstudio:latest

2、使用下载好的镜像创建容器

docker run -itd -p 8888:8787 -d --restart always --name test -v /home/test/rstudio/:/home/test rocker/rstudio:latest
# 注:使用拉取到服务器中的镜像在test用户rstudio文件夹下挂载
# 1、尽量不要使用8787端口,改用其他端口,如8888是我自己设置的映射端口
# 2、-d --restart always设置自动启动容器,否则服务器重启或docker服务重启之后,该容器还处于stop状态
# 3、若忘记设置restart always可使用:docker update --restart=always test进行更新

3、在创建好的容器中创建用户

#  进入test容器内部
docker exec -it test bash

# 创建用户:即Rstudio-server登录界面的用户,此处1001为test用户的用户组号,具体根据自己的子用户进行更改
adduser -u  1001 test
# 输入密码,重复输入两次即可

# 更改该容器中root密码,设置密码即可在Rstudio的终端中运行su命令进入root权限
passwd

4、更改用户rstudio文件夹权限

# 由于docker创建的容器是在root权限下进行的,因此该文件夹权限属于root,需要将其权限改为test所属
chown -R test.test /home/test/rstudio

5、Rstudio-Server登录

# 查看服务器ip
hostname -i
#使用服务器ip+端口号在浏览器中即可登录,输入上述创建的账号密码
ip:8888

至此,用户test即可使用Finalshell软件连接服务器在rstudio文件夹下进行文件上传和下载,需注意:由于linux安装R包所需的依赖导致R包安装不上,在Rstudio的终端中su进入root根据相应的R包依赖库进行安装,随后在安装R包即可安装成功

二、自定义Dockerfile进行部署–推荐

由于不同用户对R包的需求不一,因此推荐使用Dockerfile自定义安装所需的R包,部署好的Rstudio-server将自带这些R包,不再需要手动安装

此处仍以上述的空白R包的Rstudio-server为例

1、Dockerfile文件DIY

vim  Dockerfile
# 根据R包的需要进行自定义Dockerfile文件,以下内容复制到Dockerfile文件中
# 由于R包很多,因此花费时间较长约3小时,不同用户可以自定义所需的R包

FROM rocker/rstudio:latest 

ARG bioc_ver=3.19

RUN apt-get clean all && \
    apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y \
        libhdf5-dev \
        libssl-dev \
        libxml2-dev \
        libpng-dev \
        libxt-dev \
        zlib1g-dev \
        libbz2-dev \
        liblzma-dev \
        libglpk40 \
        libgit2-dev \
        libbz2-dev \
        libfontconfig1-dev \
        libharfbuzz-dev \
        libhdf5-dev \
        patch \
        libharfbuzz-dev \
        libfribidi-dev \
        libfreetype6-dev \
        libpng-dev \
        libtiff5-dev \
        libjpeg-dev \
        jags \
        libgmp3-dev \
        libmpfr-dev \
        libv8-dev \
        libcairo2-dev \
        libmagick++-dev \
        cmake \
        libgdal-dev \
        libssl-dev \
        libssh2-1-dev \
        libxml2-dev \
    && apt-get clean all && \
    apt-get purge && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*


RUN Rscript -e "install.packages(c('rmarkdown', 'tidyverse', 'workflowr', 'BiocManager', 'pacman', 'devtools', 'hdf5r', 'ggiraphExtra', 'magick','alphahull', 'dbscan'), ask = F, update = F, dependencies = T);"
RUN Rscript -e "BiocManager::install(version = '${bioc_ver}')"
RUN Rscript -e "library(pacman);pacman::p_load(ggplot2, dplyr, data.table, magrittr, patchwork, RColorBrewer, clustree, cowplot,harmony, ggrepel, GSVA, clusterProfiler, survminer, ggpubr, stringr, rio, pheatmap, survival,sctransform, tibble,futile.logger, ggrisk, ggstatsplot, timeROC, maftools, edgeR, DESeq2, FactoMineR, factoextra, org.Hs.eg.db, stringi,cowplot, ggsci, VennDiagram, ggplotify, GEOquery, TCGAbiolinks, SummarizedExperiment, scCustomize, xml2, rvest, raster, rmarkdown, rticles, openai, update = F)"
RUN Rscript -e "BiocManager::install(c(‘seurat’,'GSEABase', 'GEOquery', 'limma', 'impute', 'hgu133plus2.db', 'infercnv', 'SingleR', 'tidydr','simplifyEnrichment', 'biomaRt', 'EnsDb.Hsapiens.v86', 'Rhtslib', 'Rsamtools', 'GenomicAlignments','rtracklayer', 'GenomicFeatures', 'ensembldb', 'paletteer', 'ggdendro', 'monocle', 'BiocGenerics', 'DelayedArray', 'DelayedMatrixStats','S4Vectors','SingleCellExperiment','batchelor', 'kstreet13/slingshot'), ask = F, update = F, dependencies = T)"

2、创建docker镜像

docker build -t test_image/rstudio:r.4.4.1 .
#.表示Dockerfile在当前目录下

3、使用自定义的docker镜像创建容器

docker run -itd -p 8888:8787 -d --restart always --name test -v /home/test/rstudio/:/home/test test_image/rstudio:r.4.4.1
# 后续操作同前文一样,创建用户,更改rstudio文件夹权限

4、在创建好的容器中创建用户

#  进入test容器内部
docker exec -it test bash

# 创建用户:即Rstudio-server登录界面的用户,此处1001为test用户的用户组号,具体根据自己的子用户进行更改
adduser -u  1001 test
# 输入密码,重复输入两次即可

# 更改该容器中root密码,设置密码即可在Rstudio的终端中运行su命令进入root权限
passwd

5、更改用户rstudio文件夹权限

# 由于docker创建的容器是在root权限下进行的,因此该文件夹权限属于root,需要将其权限改为test所属
chown -R test.test /home/test/rstudio

6、Rstudio-Server登录

# 查看服务器ip
hostname -i
#使用服务器ip+端口号在浏览器中即可登录,输入上述创建的账号密码
ip:8888

三、将自己的Dockerfile镜像打包迁移至新的服务器进行部署

1、在原服务器上打包已有镜像

# 以上述的Dockfile创建的镜像为例
docker save -o test_image.tar test_image/rstudio:r.4.4.1
# 使用finalshell将其下载到本地,并上传到新服务器中

2、在新服务器上部署镜像

docker load -i test_image.tar
# 使用docker images查看镜像,即在新服务器中存在test_image/rstudio:r.4.4.1镜像

后续创建容器和添加用户流程和上述一致

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值