Docker 镜像目录
Docker 是最火的云计算基础设置,它把软件连带其运行的环境一起打包,为快速构建生信运行环境提供了可能。
本教程,我们将汇编常见的 docker 基础镜像,并尝试构建一些好用的镜像。
Docker其实很容易学,相信你们能很快学会。
现在开始学习 Docker ! 全面学习 Docker 的常用操作,配套案例。
生信 docker 基础镜像
本文仅测试于 Ubuntu/CentOS Linux 环境。
- jupyter/datascience-notebook: Python 数据分析 基础镜像
- rocker-project: R 和 Rstudio基础镜像。https://www.rocker-project.org/
- Seurat: Seurat 各个版本的基础镜像,不带 Rstudio。
构建 Docker镜像
- Rstudio + Seurat Image: R 4.1.0 with Seurat 4.0.5
- Rstudio + Monocle3 Image: R 4.1.0 + Seurat 4.0.5 + Monocle3 1.0.0
构建1时优化了用户权限,花了很多不必要的时间;之后构建只保证能用,不保证好用,怎么快速构建怎么来。构建1的收获是:使用 Dockerfile 构建确实方便。
构建2时,安装 Seurat4 花了很多时间,因为网络等原因反复重复。比较好的路线是使用 Seurat 基础镜像并安装一个Rstudio(参考构建1),然后在此基础上安装包库,并使用 docker commit 提交镜像。而构建2比较好的实践是:目录挂载、容器启动后再手动新建用户,并做磁盘软链接。
Docker 常用操作
镜像和容器的常用操作。
镜像的下载与传送
可以从某些云下载镜像,然后打包成文件,下载到自己的服务器,再导入使用。 $ docker pull aertslab/pyscenic:0.12.1 查看 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE aertslab/pyscenic 0.12.1 4d3790890827 2 years ago 986MB 压缩为gz文件 $ docker save aertslab/pyscenic:0.12.1 | gzip > aertslab__pyscenic_0.12.1.image.tar.gz -rw-rw-r-- 1 wangjl2 wangjl2 293M Jan 16 15:01 aertslab__pyscenic_0.12.1.image.tar.gz $ md5sum aertslab__pyscenic_0.12.1.image.tar.gz d02591d3985e7a9a60ac0cd5898f402c aertslab__pyscenic_0.12.1.image.tar.gz 传输gz文件 $ scp aertslab__pyscenic_0.12.1.image.tar.gz wangjl@xxxx.ac.cn:/path/to/wangjl/ 导入gz文件为镜像 $ gunzip -c /path/to/wangjl/aertslab__pyscenic_0.12.1.image.tar.gz | docker load 查看镜像 $ docker images | grep pyscenic aertslab/pyscenic 0.12.1 4d3790890827 2 years ago 986MB
启动docker,创建用户名
为与宿主机权限一致,我们在docker内新建用户,其uid和gid和host中的当前用户相同。
在宿主机(host)查看uid和gid。 $ id uid=5662(wangjl) gid=1210(jinlab) 映射当前目录为容器中的/data/ $ cd /datapool/wangjl/others/zhaoym/output/demo_SCENIC 推荐在tmux环境中启动容器: $ tmux $ docker run --name pyscenic -it -v `pwd`:/data aertslab/pyscenic:0.12.1 bash 创建用户名和密码:保持和host的uid和gid一致 # DEFAULT_USER="wangjl2" && uid=5662 && gid=1210 # groupadd -g $gid groupA # useradd -s /bin/bash -d /home/${DEFAULT_USER} -m ${DEFAULT_USER} -u $uid -g $gid # echo "${DEFAULT_USER}:123456.." | chpasswd 切换到新用户 # su wangjl2 $ cd /data 查看容器中软件包的位置: $ which pyscenic /opt/venv/bin/pyscenic $ python3 -V Python 3.10.6 $ pip3 -V pip 22.2.1 from /opt/venv/lib/python3.10/site-packages/pip (python 3.10) 可以使用 exit 退出docker环境。 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fc98566b5a12 aertslab/pyscenic:0.12.1 "bash" 2 hours ago Up 2 hours 8787/tcp pyscenic
再次进入 docker 环境:
$ docker exec -it pyscenic bash root@fc98566b5a12:/# su wangjl2 wangjl2@fc98566b5a12:/$ cd /data/
参考资料
Docker部署Rstudio Server【四】:订制自己的个性化镜像 https://www.jianshu.com/p/5ea31859aba5