氣象模擬WRF容器化操作實踐
1????? WRF介紹
WRF全稱Weather Research and Forecasting Model, 是一個天氣研究與預報模型,可以用來進行精細尺度的天氣模擬與預報。參考:https://xg1990.com/blog/archives/190
但是這個軟件的安裝比較復雜,要包含WPS和WRF兩大模塊,其中WPS又包含geogrid,ungrib,metgrid三小步驟,并且還有一大堆的依賴包,賊麻煩。所以使用Docker輕量級容器來確保軟件使用環境的一致性,是個非常不做的方式。一旦做好鏡像,隨處可以運行wrf,這一點可以從WRF官方GitHub網站上也可以看出來,他們自己就提供了容器化操作的詳細指導。https://github.com/NCAR/WRF_DOCKER/blob/master/README_tutorial.md
2????? 安裝Docker軟件
要跑docker容器,得先安裝docker軟件。我這里使用Ubuntu 18.04為例(其他的網上隨便一搜一大堆):
apt install docker.io
然后可以敲:
docker ps
確定docker安裝好了
3????? 安裝&啟動WRF容器
整體還是參考wrf倉庫指導:
https://github.com/NCAR/WRF_DOCKER/blob/master/README_tutorial.md
(這個里面的Dockerfile編譯會失敗,有issue跟蹤)
和
https://github.com/davegill/wrf-coop
3.1????? 下載包含依賴包的基礎鏡像
本應該按照它的第一部分Dockerfile-first_part構建基礎鏡像。
docker pull davegill/wrf-coop:eighthtry
這樣咱們就有了這個名叫:davegill/wrf-coop,版本是:eighthtry 的鏡像了。
可以通過:
docker images
命令查看
3.2????? 打包wrf鏡像
然后咱們用這個基礎鏡像,打包一個包含wrf的最終目標鏡像。
根據:https://github.com/davegill/wrf-coop 的描述
基礎鏡像,就是Dockerfile-first_part那個,這個咱們偷懶,已經直接下載了現成的。所以現在咱們開始搞Dockerfile-second_part。
下載那個Dockerfile-second_part文件,運行以下命令:
cp Dockerfile-second_part Dockerfile
docker build -t wrftest .
這時就會打包好一個 wrftest的目標鏡像。
可以通過
docker images
命令查看。
3.3????? 編譯wrf
啟動一個剛才打包好的wrf鏡像,并進入到容器內部。
docker run -it --name test_001 wrftest
這樣就進入到一個容器里面了。
執行編譯命令:
./script.csh BUILD CLEAN 34 1 em_real -d J=-j@3
成功后,我們就可以開始執行wrf的功能了~
3.4????? 執行WRF測試用例
在上一步的編譯成功后,咱們跑一跑它自帶的測試用例:
./script.csh RUN em_real 34 em_real 01 NP=3 ; set OK = $status ; echo $OK for test 01
運行沒問題。
實際執行的應該是:
即:
mpirun -np 3 -oversubscribe real.exe
類似這種命令,具體含義,相信你應該比我熟了。(我們搞容器的,不怎么關系容器里面跑的軟件長什么樣。跟搞操作系統的,應該對所有app一視同仁一個道理)
詳細內容,可以看一下:./script.csh 這個腳本,里面包裝了一些腳本參數。
3.5????? 掛載外部存儲卷,到WRF容器內
根據Docker容器的功能,用戶可以把外部的共享存儲,掛載到容器里面去(跟nfs掛載
類似)。如果能借助Kubernetes就更厲害了,可以掛載更多的共享存儲類型。
可以參考這個https://github.com/NCAR/WRF_DOCKER/blob/master/README_tutorial.md#example-2
。
使用docker的 -v 參數可以把主機的目錄,掛載到容器里面去。那么WRF的輸入數據,輸出結果啊,都可以直接讀寫到這個掛載的共享目錄里面。
Docker 容器
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。