本文以jupyter调用Seurat 4.0的docker环境为例子说明
1. 首先安装docker
去官网下载相关的版本和安装,需要注意的是如果是windows10的家庭版本电脑,安装docker之前需要先安装ubuntu和WSL2
2. 安装Seurat 4.02镜像
docker pull satijalab/seurat:4.0.2
3. 启动镜像
## 首先要确定好你的工作目录,然后把其挂在到镜像里面
## 这里到工作目录为:/Users/liji/PycharmProjects/docker_R
## 启动镜像
## 如果是wind系统,路径需要改成linux,例如D:\docker_R改成/D/docker_R
docker run -it --name notebook-server -p 7777:8888 -v /Users/liji/PycharmProjects/docker_R:/Users/liji/PycharmProjects/docker_R satijalab/seurat:4.0.2 /bin/bash
4. 在镜像里面安装jupyter
如果docker的镜像没有vi,需要安装下
apt-get update
apt-get install vim
# 安装 jupyter
pip install jupyter notebook
# 配置jupyter notebook
jupyter notebook --generate-config
执行完上述之后,会生成jupyter_notebook_config.py
文件,然后进行下面的配置
## 配置jupyter, 镜像里面没有vim的话用cat
## 集群远程配置可以参考: https://www.jianshu.com/p/444c3ae23035
# 允许root启动
c.NotebookApp.allow_root = True
# 允许远程访问
c.NotebookApp.ip = '*'
# 设置notebook文件夹
c.NotebookApp.notebook_dir = '/Users/liji/PycharmProjects/docker_R'
# 设置静态token,这样就不用每次换token了,另一种方法是设置密码password
c.NotebookApp.token = '根据自己的需求修改(网页打开时候用)'
5. 在Jupyter中安装R内核
install.packages('devtools') #在R中安装devtools库
## 利用镜像工具从github网站下载安装R kernel:
devtools::install_github('IRkernel/IRkernel')
# 失败的话选择:先wget压缩包到R工作目录,然后本地安装
wget https://cran.rstudio.com/src/contrib/IRkernel_1.2.tar.gz ./
devtools::install_local('IRkernel-master.tar.gz')
IRkernel::installspec() # to register the kernel in the current R installation
## 如果需要Cario
https://www.cairographics.org/download/
6. Jupyter使用R内核
然后在镜像运行:
## 第一次启动容器:
docker run -it --name notebook-server -p 7777:8888 -v /Users/liji/PycharmProjects/docker_R:/Users/liji/PycharmProjects/docker_R satijalab/seurat:4.0.2 /bin/bash
## 已经有容器了:
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
14b3f03dd31e satijalab/seurat:4.0.2 "/bin/bash" 22 hours ago Up 4 minutes 0.0.0.0:7777->8888/tcp, :::7777->8888/tcp notebook-server
## 进入运行中的容器
$ docker exec -it 14b3f03dd31e /bin/bash
## 在容器中运行jupyter
$ jupyter notebook
root@14b3f03dd31e:/# jupyter notebook
[W 07:57:42.752 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
[I 07:57:42.767 NotebookApp] Serving notebooks from local directory: /Users/liji/PycharmProjects/docker_R
[I 07:57:42.768 NotebookApp] Jupyter Notebook 6.4.0 is running at:
[I 07:57:42.768 NotebookApp] http://14b3f03dd31e:8888/?token=...
[I 07:57:42.768 NotebookApp] or http://127.0.0.1:8888/?token=...
[I 07:57:42.768 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 07:57:42.781 NotebookApp] No web browser found: could not locate runnable browser.
修改:http://127.0.0.1:8888/?token=...
这里上面的7777
和自己设置的token(一连串字符)
docker有用的命令
#### 容器一旦从镜像建立之后不需要重新建立,可以用下面的命令来启动
docker ps -a 来看终止状态的容器
docker start 启动终止的容器
docker container ls 来看运行中的容器
jupyter 调用conda环境
### 需要先自己安装好conda和相关的环境,然后进去环境里面
### 不需要每个环节都安装jupyter,只需要安装ipykernel
conda install ipykernel
python -m ipykernel install --user --name 环境名称 --display-name "在jupyter中显示的环境名称"
### 需要注意的是在conda环境启动jupyter