containerd: создание нового изображения из снимка коммита

Я использую containerd"s golang клиент.

  1. Я создал снимок.
  2. Я запускаю несколько команд против активного снимка.
  3. Я сделал снимок.

Как мне создать новое изображение с новым зафиксированным снимком?

// Let's create the snapshot that all of our containers will run off of
snapshotKey := utils.NewID()
session.createSnapshot(ctx, snapshotKey, img)
defer session.deleteSnapshot(ctx, snapshotKey)

if err = session.RunContainer(ctx, ContainerConfig{
    newOpts: []containerd.NewContainerOpts{
        containerd.WithSnapshot(snapshotKey),
        containerd.WithNewSpec(
            oci.WithProcessArgs("/usr/bin/env", "bash", "-c", "/darch-prepare"),
        ),
    },
}); err != nil {
    return err
}

if err = session.RunContainer(ctx, ContainerConfig{
    newOpts: []containerd.NewContainerOpts{
        containerd.WithSnapshot(snapshotKey),
        containerd.WithNewSpec(
            oci.WithProcessArgs("/usr/bin/env", "bash", "-c", fmt.Sprintf("/darch-runrecipe %s", recipe.Name)),
        ),
    },
}); err != nil {
    return err
}

if err = session.RunContainer(ctx, ContainerConfig{
    newOpts: []containerd.NewContainerOpts{
        containerd.WithSnapshot(snapshotKey),
        containerd.WithNewSpec(
            oci.WithProcessArgs("/usr/bin/env", "bash", "-c", "/darch-teardown"),
        ),
    },
}); err != nil {
    return err
}

err = session.client.SnapshotService(containerd.DefaultSnapshotter).Commit(ctx, "test-commit-name", snapshotKey)
if err != nil {
    return err
}

// TODO: save image

0 ответов

Другие вопросы по тегам