前言
上一篇博客写的docker入门,从docker要素,到容器与虚拟机的区别,再到打印第一个hello world,再到在容器中配置Python环境。这里也是在配环境,是一个脑影像软件FSL的环境,其实很简单,一看就会。
docker原理与基本操作见:Doker入门一条龙
docker下FSL图形化交互见:Docker容器中GUI软件的远程图形界面交互
方法一:用现成的镜像
dockerhub中FSL镜像,下载较多的是neurodata上传的fsl_1604 镜像。它是ubuntu内核,查看ubuntu版本为2020,所以笔者比较疑惑它为什么叫1604。里面fsl环境变量那些应该是已经添加了的,因为可以直接使用fsl的命令,如bet。
docker pull neurodata/fsl_1604
docker run -itd --name fsl_1604 -v /d/docker/fsl_1604:/shared_data neurodata/fsl_1604 bash
bet /shared_data/test.nii.gz /shared_data/test_out.nii.gz
test.nii.gz | test_out.nii.gz |
方法二:自己搭FSL环境
docker run -it --name ubuntu_fsl -v /d/docker/ubuntu_fsl:/shared_data ubuntu bash
更换apt镜像源详细叙述见上一篇文章。它很重要,因为以下将用通用的软件安装方式来安装FSL,如果不更换至国内源,下载速度将非常慢。笔者发现用阿里源安装fsl时常常出错,所以把镜像源换成了163源。即
sources.list
deb http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse
可以按照neuro.debian.net指示进行安装,但是到最后一步时可能找不到fsl-complete包。也可以像通常安装软件那样安装FSL。这里用后者。
apt-get install fsl
安装过程要持续较长一段时间,如果安装过程出现错误,重新更新一下源,再尝试安装。中间的设置按照提示进行即可。
apt-get update
配置环境变量也就是将软件的入口放在操作系统能遍历到的地方,这样你在命令行窗口直接输入该软件使用命令时操作系统可以找到并执行该命令。如果不配置,则需要cd到该命令所在位置,然后用./bet执行它。
未配置环境变量时使用,如FSL剥头皮的bet命令:
/usr/share/fsl/5.0/bin/./bet
# dpkg -L fsl查看软件安装地址
这篇文章中讲解了多种配置环境变量的方法,这里只配置bash。目录/etc/fsl/下的fsl.sh脚本提供了fsl的入口,所以我们将它的路径追加到/etc下的bash.bashrc文件末尾即可。
echo ". /etc/fsl/fsl.sh" >>/etc/bash.bashrc
退出容器
exit
重新进入容器
docker exec -it ubuntu_fsl bash
查看环境变量,其中不出意外已经存在FSL的路径。
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/fsl/5.0
配置环境变量后即可直接使用bet命令。
bet /shared_data/test.nii.gz /shared_data/test_out.nii.gz
test.nii.gz | test_out.nii.gz |
参考
https://hub.docker.com/r/neurodata/fsl_1604
https://www.cnblogs.com/dylancao/p/10109298.html
https://blog.csdn.net/jiangjiang_jian/article/details/80698029?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160290344719724838538902%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=160290344719724838538902&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v28-2-80698029.pc_first_rank_v2_rank_v28&utm_term=linux+fsl&spm=1018.2118.3001.4187