📦 enroot
本ドキュメントは、SuperPOD 環境において
NVIDIA NGC(NVIDIA GPU Cloud) で提供されているコンテナを enroot で利用する方法をまとめたものです。
enroot は Docker に近い操作感を持ちながら、
Slurm / HPC 環境向けに最適化された軽量コンテナランタイムです。
■ enroot とは
enroot は NVIDIA が提供する軽量コンテナランタイムです。
- root 権限不要でコンテナを実行可能
- GPU 利用に最適化
- Slurm と高い親和性
- NGC コンテナ(Docker 形式)をそのまま利用可能
主に以下を目的として利用されます:
- GPU ノード上での実行環境の分離
- 計算環境の 再現性確保
■ 利用の前提
以下の条件を満たしている必要があります:
- ログインサーバーから Slurm を用いて GPU ノードを確保できる
enrootコマンドが利用可能である- 使用する NGC コンテナイメージ が決まっている
(例:CUDA / cuDNN / PyTorch / TensorFlow など)
■ 基本的な流れ(全体像)
- NGC 上のコンテナイメージを
importする - 取り込んだイメージからコンテナを作成(create)する
- GPU ノード上でコンテナを起動(start)する
- コンテナ内で学習・解析・推論などを実行する
■ 1. NGC コンテナイメージを取り込む
NGC に公開されているコンテナイメージを、
enroot 形式(.sqsh)に変換します。
例:CUDA + cuDNN ランタイム
enroot import docker://nvcr.io/nvidia/cuda:13.0.2-cudnn-runtime-ubuntu24.04
成功すると、以下のようなファイルが生成されます。
nvidia+cuda+13.0.2-cudnn-runtime-ubuntu24.04.sqsh
■ 2. コンテナを作成する
import 済みのイメージからコンテナを作成します。
enroot create nvidia+cuda+13.0.2-cudnn-runtime-ubuntu24.04.sqsh
作成済みコンテナは以下で確認できます:
enroot list
■ 3. GPU ノードでコンテナを起動する
GPU ノードを確保
srun -p 032-partition --gres=gpu:1 --pty bash
コンテナを起動
enroot start nvidia+cuda+13.0.2-cudnn-runtime-ubuntu24.04
起動後、コンテナ内のシェルに入ります。
■ 4. ホストディレクトリ(/lustre)をマウントする
ホスト側の作業ディレクトリをコンテナから参照する場合は
--mount オプションを使用します。
enroot start \
--rw \
--mount /lustre/userXXXX:/workspace \
nvidia+cuda+13.0.2-cudnn-runtime-ubuntu24.04
/lustre/userXXXX:ホスト側ディレクトリ/workspace:コンテナ内マウント先
■ よく使うオプション
| オプション | 説明 |
|---|---|
--rw | コンテナを書き込み可能で起動 |
--root | root ユーザーとして起動(※通常は不要) |
--mount | ホストディレクトリをマウント |
■ コンテナの停止・削除
停止
enroot stop <コンテナ名>
削除
enroot remove <コンテナ名>
■ 補足・注意事項
- enroot は Docker のようなデーモンは持ちません
- コンテナ内の変更は基本的に永続化されません
- 永続化が必要なデータは必ず ホスト側(例:/lustre) に保存してください
- NGC コンテナはサイズが大きいため、ディスク容量に注意してください
推奨運用
/lustre配下に作業ディレクトリを作成- 必要なデータ・成果物はすべてそこに保存
- コンテナは「実行環境」と割り切る