Docker配置iraf工作環(huán)境

前段時(shí)間筆者因工作原因需要在自己的電腦上配置iraf環(huán)境,前后嘗試了多種方法都安裝不成功。后來師兄推薦使用Docker,筆者簡(jiǎn)單了解后(中間也踩了坑,折騰了很多細(xì)節(jié)),終于在自己的Macbook上安裝并配置好了iraf。

先說說安裝Docker之前的失敗經(jīng)歷吧:

  1. 一開始我計(jì)劃在macOS系統(tǒng)上用anaconda安裝pyraf以達(dá)到目的。然而過程并不順利,首先是網(wǎng)絡(luò)連接特別慢(因疫情原因在家辦公,民用網(wǎng)絡(luò)遠(yuǎn)不如單位的科技網(wǎng)),下載環(huán)境所需的包時(shí)經(jīng)常斷連。最終好不容易把所有環(huán)境配置所需的包下載完成后,筆者遇到了一個(gè)無解的問題:macOS 10.15 Catalina只支持64位程序,而iraf是32位的......

  2. 既然macOS 10.15無法運(yùn)行,筆者又不想回退系統(tǒng)(畢竟sidecar太香了),那就用Parallels Desktop跑Ubuntu系統(tǒng)總行了吧。實(shí)際情況并沒有想象中那么順利,先是遇到網(wǎng)絡(luò)問題無法下載某些包,后是用離線安裝的方式報(bào)出各種錯(cuò)誤,折騰一周依舊無果(菜是原罪),放棄。

最終,筆者選擇了Docker,配置好后發(fā)現(xiàn),這個(gè)方式非常簡(jiǎn)單方便。畢竟已經(jīng)有dalao直接上傳帶有iraf軟件包的鏡像文件,我們只需要做一個(gè)簡(jiǎn)單的配置就好。

首先要說明,筆者配置環(huán)境的機(jī)器是Macbook Pro 13-inch 2018,系統(tǒng)版本:macOS Catalina 10.15.3。


OK,咱們進(jìn)入正題。

首先,下載Docker客戶端,網(wǎng)址:Docker Desktop for Mac and Windows | Docker

安裝運(yùn)行后,在終端輸入以下命令拉取鏡像(因?yàn)槭峭鈬?guó)網(wǎng)站,速度可能比較慢,可自行搜索阿里云鏡像加速以提高下載速度):

docker pull michaelcs/astrocondairaf

該鏡像是michaelcs于三年前上傳至dockerhub,詳情請(qǐng)見:Docker Hub

拉取成功后,可用以下命令查看已存在的鏡像:

docker images

新建容器(-d代表后臺(tái)運(yùn)行容器并返回容器ID,-i代表以交互模式運(yùn)行容器,-t代表為容器重新分配一個(gè)偽輸入終端;/bin/bash表示制定終端類型;沒有參數(shù)-d的話,exit容器后就無法再次啟動(dòng)了,原因作者暫時(shí)沒弄明白;冒號(hào)部分是共享文件夾設(shè)置,冒號(hào)前面是主機(jī)共享文件夾地址,后面是容器內(nèi)地址):

docker run -dit -v /Users/xxx/workplace:/root/iraf/workplace michaelcs/astrocondairaf /bin/bash

用以下命令可以查看現(xiàn)有的容器:

docker ps -a
#輸出如下:
  CONTAINER ID        IMAGE                      COMMAND                  CREATED            STATUS                      PORTS              NAMES
  79c1cea5ccdf        michaelcs/astrocondairaf  "/usr/bin/tini -- /b…"  2 hours ago        Up 25 minutes                                    amazing_shirley

特別說明:由于作者為減小鏡像體積,故將vim等文本編輯器從鏡像中移除(然并卵,鏡像文件依舊很大,還增加了不必要的麻煩)。為了配置工作環(huán)境,我們可以在容器中配置好自己的工作環(huán)境后再保存為新的鏡像,以后用新的鏡像創(chuàng)建容器可以省去重新配置的麻煩。

我們剛才已經(jīng)創(chuàng)建了容器,并且通過命令看到該容器已經(jīng)在運(yùn)行了(STATUS 為 Up;若沒有運(yùn)行,狀態(tài)是Exited,則需要用命令:docker start ’容器ID’ 啟動(dòng)),輸入命令進(jìn)入容器:

docker attach ‘容器ID’      #ID只需要輸入前4位就可以啦~
#例如:
docker attach 79c1

進(jìn)入容器后,我們首先安裝vim(方便修改login.cl等文件):

apt-get update
apt-get install vim

進(jìn)入root文件夾并創(chuàng)建iraf文件夾,激活iraf27環(huán)境:

cd root
mkdir iraf
cd iraf
mkiraf
mkdir scripts  #可以將腳本文件放到這個(gè)文件夾

接下來編輯login.cl文件:

vim login.cl

找到’List any packages you want loaded at login time, ONE PER LINE.’將以下內(nèi)容復(fù)制到該段并保存(筆者工作需要使用這些包,各位按需自行添加):

noao
digiphot
imred
crutil
spec
tv
onedspec
twodspec
ccdred
astutil
longslit
apextract
stsdas
kpnoslit
fitsutil

接下來去下載兩個(gè)文件,用于去除圖像中的宇宙線(若不需要用到可跳過)。進(jìn)入LA-Cosmic download,下載IRAF的Imaging Version和Spectroscopic Version,下載的文件名分別為lacos_im.cl和lacos_spec.cl,將這兩個(gè)文件放到/root/iraf/文件夾下。

進(jìn)入stsdas.cl目錄并編輯該文件:

cd /opt/conda/envs/iraf27/variants/common/iraf/stsci_iraf/stsdas/

vim stsdas.cl

將以下段復(fù)制進(jìn)stsdas.cl文件并保存:

task lacos_im = "/root/iraf/lacos_im.cl"
task lacos_spec = "/root/iraf/lacos_spec.cl"

OK,環(huán)境配置完成,要使用iraf,先用‘source activate iraf27’命令激活環(huán)境,然后在/root/iraf/目錄下輸入'cl'即可進(jìn)入iraf。

當(dāng)然,想省去下次使用新容器的麻煩,可以將本次配置好的容器保存成鏡像,今后用新鏡像創(chuàng)建的新容器都是保存好的配置。

將容器保存成鏡像的命令如下:

docker commit xxxxx yyyyy    #其中‘xxxxx’是你要保存成鏡像的容器名稱,‘yyyyy’是你創(chuàng)建鏡像的名稱
#例如:
docker commit amazing_shirley astroiraf
docker images
# 輸出如下,astroiraf就是我們新建的鏡像。今后就可以用astroiraf新建容器啦!
  REPOSITORY                TAG                IMAGE ID            CREATED            SIZE
  astroiraf                 latest              ad2f69ba3366        9 seconds ago      6.5GB
  michaelcs/astrocondairaf  latest              fad12202adae        3 years ago        6.45GB

完成!又可以愉快地工作啦~


最后,文中若有說得不對(duì)的地方,歡迎各位dalao指出~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容