如何从奇点镜像构建docker镜像

ale*_*lex 5 containers docker singularity-container

我目前正在研究奇异性和 docker。我正在运行 MPI 环境的奇点。

我想利用 MPI 的奇点优势,但奇点文件非常大。因此,在运行奇点映像后,我想将其转换为 docker 映像,然后保存它,这将节省磁盘空间。

是否可以将奇点图像转换为 docker 图像?

Jak*_*kub 5

正如 @tsnowlan 在他们的回答中所说,通常工作流程是从 Docker 到 Singularity。但是有一种方法可以从现有的 Singularity 镜像制作 Docker 镜像。这不会利用 Docker 的层缓存功能。

总体思路是:

  1. 将 Singularity 图像文件系统转储为 squashfs 文件。
  2. 将 squashfs 文件提取到目录中。
  3. 创建一个从头开始继承的 Dockerfile ,复制 Singularity 映像的文件系统,并设置环境变量和其他内容。
  4. 构建 Docker 镜像。

这是在 bash 中,在 上演示alpine:latest

singularity pull docker://alpine:latest
# Find out which SIF ID to use (look for Squashfs)
singularity sif list alpine_latest.sif
# Get the environment variables defined in the Singularity image.
singularity sif dump 2 alpine_latest.sif
singularity sif dump 3 alpine_latest.sif > data.squash
unsquashfs -dest data data.squash
# See the Dockerfile definition below
docker build --tag alpine:latest .
Run Code Online (Sandbox Code Playgroud)

Dockerfile 的内容:

FROM scratch
COPY data /
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
CMD ["/bin/ash"]
Run Code Online (Sandbox Code Playgroud)

有关 Singularity 和 Docker 的更多信息,我建议查看有关该主题的 Singularity 文档


Abd*_*UMI 0

使用 Singularity 容器化 MPI 应用程序并不是非常困难,但它是以对主机系统提出额外要求为代价的。

这意味着您必须为此自定义图像选择正确的图像库。像这个例子

FROM tacc/tacc-ubuntu18-mvapich2.3-psm2:0.0.2

RUN apt-get update && apt-get upgrade -y && apt-get install -y python3-pip
RUN pip3 install mpi4py

COPY pi-mpi.py /code/pi-mpi.py
RUN chmod +x /code/pi-mpi.py

ENV PATH "/code:$PATH"
Run Code Online (Sandbox Code Playgroud)