将 docker tar 文件转换为奇异图像?

irr*_*rom 5 docker singularity-container

我是 Docker 和 Singularity 的新手。我最近创建了规范的main.c.

#include <stdio.h>
#include <stdlib.h>

int main(void){
    printf("Hello Docker World!\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我静态编译了这段代码,即

gcc -static -static-libgcc -static-libstdc++ -o hello main.c
Run Code Online (Sandbox Code Playgroud)

然后我构建了docker镜像并可以运行它,即

dockerd &  ## Start Docker daemon
docker build --tag hello .
docker run hello   ## Outputs "Hello Docker World"
Run Code Online (Sandbox Code Playgroud)

然后我保存图像,以便我可以将其导出到第二台计算机(它没有 docker,但确实有奇点),即

docker save hello > hello.tar
Run Code Online (Sandbox Code Playgroud)

现在在第二台没有 docker 但有奇点的机器上,我想创建一个奇点图像。奇点文档给出了从 Docker Hub 上的 docker 镜像创建奇点镜像的说明,但没有给出从 docker tar 文件转换的说明。

问题:我将如何从我的图像中创建一个奇点图像 hello.tar

Ruo*_*Liu 7

  1. 首先,保存您的 docker 映像。

    sudo docker save image_id -o local.tar

  2. 然后以您喜欢的任何方式复制到另一台机器

  3. local.tar最后,从by构建奇点图像

    singularity build local_tar.sif docker-archive://local.tar

    它使用了 docker-archive 引导代理。可以在这里阅读

  • 尝试这个。`singularity build local_tar.sif local.tar` 它对我有用。 (2认同)

Lak*_*arg 0

使用本地注册表容器如下:

# Start a docker registry
$ docker run -d -p 5000:5000 --restart=always --name registry registry:2
# Push local docker container to it
$ docker tag alpine localhost:5000/alpine
$ docker push localhost:5000/alpine
# Create def file for singularity like this..
# (add your modifications)
Bootstrap: docker
Registry: http://localhost:5000
Namespace:
From: alpine:latest
# Build singularity container
$ sudo SINGULARITY_NOHTTPS=1 singularity build alpine.simg def
Run Code Online (Sandbox Code Playgroud)