シェルスクリプト内でdockerを使う方法

シェルスクリプト内で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になり、ホスト側でのファイル操作がやりづらくなることがあります。

コメント

タイトルとURLをコピーしました