containerd: создание нового изображения из снимка коммита
Я использую containerd
"s golang
клиент.
- Я создал снимок.
- Я запускаю несколько команд против активного снимка.
- Я сделал снимок.
Как мне создать новое изображение с новым зафиксированным снимком?
// 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