在集群中使用容器应用
由于 Docker 容器存在的一些不足,因此我们采用 NVIDIA 提供的工具 enroot 来在集群上运行 Docker 应用。如果需要使用容器应用,请参照下面的步骤进行操作。
1. 将 Docker 镜像转换为 enroot 格式镜像
# From Docker hub
enroot import docker://[USER@][REGISTRY#]IMAGE[:TAG]
# Example:
# docker pull pytorch/pytorch -> enroot import docker://pytorch/pytorch
# From Docker daemon
enroot import dockerd://IMAGE[:TAG]
# Examples
docker images
# REPOSITORY TAG IMAGE ID CREATED SIZE
# openjdk 8 448f9e615795 11 days ago 526MB
# -> enroot import dockerd://openjdk:8
运行命令后,会在当前目录下生成.sqsh
格式的本地镜像。
2. 通过 srun
命令提交在容器中运行的命令
只能通过 srun
命令提交在容器中运行的命令(不支持 sbatch
)。
阅读以下部分前请先阅读 srun
命令的使用方法。如果需要在容器中运行命令,仅需要在调用 srun
命令时额外添加下面部分参数即可:
--container-image
: 容器镜像。可以为上一步生成.sqsh
文件路径,也可以是镜像 URL 如pytorch/pytorch
. 推荐使用前者作为输入,避免重复import
浪费时间--container-mounts=SRC:DST[:FLAGS][,SRC:DST...]
: (可选)路径映射。将当前系统中SRC
映射至容器内DST
,如为可读写映射,需将FLAGS
置为rw
--container-save=SAVE_PATH
: (可选)容器保存目录。如果指定这一参数,运行结束后容器会保存自身状态至SAVE_PATH
下的.sqsh
格式文件--container-mount-home
: (可选)挂载/home
目录--no-container-mount-home
: (可选)不挂载/home
目录--container-remap-root
: (可选)在容器内身份为root
-
--container-writable
: (可选)容器内文件系统挂载为可读写 -
--container-readonly
: (可选)容器内文件系统挂载为只读
Authors: