Как сказал @tsnowlan в своем ответе, рабочий процесс обычно составляет от Docker до Singularity. Но есть способ сделать изображение Docker из существующего изображения Singularity. Это не позволит использовать функции кэширования слоев Docker.
Общая идея заключается в следующем:
- Создать дамп файловой системы изображений Singularity как файл squashfs.
- Извлеките файл squashfs в каталог.
- Создайте Dockerfile, который наследует от scratch , копирует файловую систему образа Singularity и задает переменные среды и другие вещи.
- Создайте 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 .
Содержимое файла Dockerfile:
FROM scratch
COPY data /
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
CMD ["/bin/ash"]
Для получения дополнительной информации о Singularity и Docker, я рекомендую посмотреть документацию Singularity по topi c.