Skip to main content

📦 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 など)

■ 基本的な流れ(全体像)

  1. NGC 上のコンテナイメージを import する
  2. 取り込んだイメージからコンテナを作成(create)する
  3. GPU ノード上でコンテナを起動(start)する
  4. コンテナ内で学習・解析・推論などを実行する

■ 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コンテナを書き込み可能で起動
--rootroot ユーザーとして起動(※通常は不要)
--mountホストディレクトリをマウント

■ コンテナの停止・削除

停止

enroot stop <コンテナ名>

削除

enroot remove <コンテナ名>

■ 補足・注意事項

  • enroot は Docker のようなデーモンは持ちません
  • コンテナ内の変更は基本的に永続化されません
  • 永続化が必要なデータは必ず ホスト側(例:/lustre) に保存してください
  • NGC コンテナはサイズが大きいため、ディスク容量に注意してください

推奨運用

  • /lustre 配下に作業ディレクトリを作成
  • 必要なデータ・成果物はすべてそこに保存
  • コンテナは「実行環境」と割り切る