OpenFOAM v8 Docker Image on Macのカスタマイズ


はじめに

OpenFOAMv8(Foundation版)をMacにインストールした後,イメージをカスタマイズする方法をここにまとめておきます。
インストールなどの詳細はこちらのQiitaページやこちらのcfdengineのページも参考になると思います。

Dockerのインストール

Dockerサイトから,Docker Desktopをダウンロード,インストールします。ここでは特筆事項はありません・・・(楽でいいですよね)。

インストールが終了しましたら,Docker Desktopを起動します。こんな感じで右上にクジラマークが現れます。

OpenFOAMv8のインストール

FoundationにあるFoundationに従ってインストールします。openfoamというディレクトリを作成し,その中で,以下のコマンドを打ち込みます。

本家から抜粋
sudo curl --create-dirs -o /usr/local/bin/openfoam8-macos http://dl.openfoam.org/docker/openfoam8-macos
sudo chmod 755 /usr/local/bin/openfoam8-macos

OpenFOAMコンテナ

openfoamのディレクトリ内で以下のコマンド(スクリプト)を実行することにより,OpenFOAMの環境が立ち上がります。

openfoam8-macos

これでblockMeshやsolversが使えるようになっています。

イメージのカスタマイズ

まず,イメージのIDを確認します。

docker images

このImage IDをメモしておきます。その後,rootでImageを立ち上げます。

docker run -it -u=root <Image ID>

スクリプトで立ち上げた場合は,aptなどでアプリをインストールしても,記録されません。が,rootで起動した場合はカスタマイズや各種設定変更はコンテナに記録されます。この状態で自分の所望のアプリをインストールします。

その後,コンテナを停止(ログアウト),Container IDを確認します。

docker ps -a

変更を加えたコンテナをイメージにcommitさせます。

docker commit <container ID> <Repository>

Repositoryですがデフォルト設定を活かし,openfoam/openfoam8-graphical-appとしておくのが良いです。ここでRepositoryを自分の好きな名に変えることも可能ですが,その際は起動スクリプト/usr/local/bin/openfoam8-macos内のDOCKER_IMAGESを修正する必要があります。

たとえば,Repositoryをopenfoam8としたいのであれば,

example
docker commit <container ID> openfoam8
openfoam8-macos
DOCKER_IMAGE='openfoam8' 

とします。

個人的には,lv, gmshgit, htop, python3.8, ffmpeg, cmake, gfortran, python3-pip(numpy, pandas, torch, tensorflow, scikit-learn, Pillow, matplotlib)は入れておくと便利かなと思います。1 2
以上でカスタマイズは終了です。お疲れさまでした。

最後に

OpenFOAMのDockerイメージのカスタマイズ方法をまとめたサイト,ページが見当たらなかったこともあり,ここにまとめてみました。まだ,Dockerの使い方を理解できていない,使い切れていないこともあり,ベストなやり方であるかは分かりません・・・。より良いやり方があれば,ご指摘いただければ嬉しいです。


  1. torchインストール時にここにあるようなエラーでインストールできないという事象が発生しました。torchをここから直接ダウンロードし,pip3でインストールすることにより解決できます。または,pip --no-cache-dir install torchとしても解決することができます。 

  2. calculix-cgx, pkg-config