シェルスクリプト内でDockerコンテナの中でプログラムを実行する方法を解説します。この方法ではPBS等のジョブスケジューラでDockerを使うこともできます。
機械学習MDツール群のDeePMD-kitのDockerイメージを使用してLAMMPSの計算を行います。
#!/bin/bash
docker run --rm -v /home/wsl/LAMMPS:/LAMMPS \
deepmodeling/deepmd-kit:3.0.0_cpu \
bash -c "cd /LAMMPS && mpiexec -n 1 lmp -in water.in"
docker run に付けるオプションは、
- –rm 実行し終わったらコンテナを消す
- -v /home/wsl/LAMMPS:/home ホスト側の/home/wsl/LAMMPSディレクトリをコンテナ側の/LAMMPSにマウントする
- コンテナ名
- bashでカレントディレクトリを移動してlmpコマンドを実行する
このようにしてシェルスクリプト内でDockerコンテナ内の処理を書くことができます。
なおdocker内がrootで動いている場合は、docker内のプロセスによって作られたファイルのパーミッションや所有者がrootになり、ホスト側でのファイル操作がやりづらくなることがあります。
コメント