diff options
author | haircommander <pehunt@redhat.com> | 2018-08-17 10:36:51 -0400 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-08-23 18:16:28 +0000 |
commit | 2a7449362f2884d9ae6a783c0ce38979d882e2cf (patch) | |
tree | 6e7b8ab33505d210201e62faba6a50f98c0a4ea7 /libpod/runtime_pod_infra_linux.go | |
parent | 697b46430a8a7c2c7231078911dcec51f0c6fab5 (diff) | |
download | podman-2a7449362f2884d9ae6a783c0ce38979d882e2cf.tar.gz podman-2a7449362f2884d9ae6a783c0ce38979d882e2cf.tar.bz2 podman-2a7449362f2884d9ae6a783c0ce38979d882e2cf.zip |
Change pause container to infra container
Signed-off-by: haircommander <pehunt@redhat.com>
Closes: #1187
Approved by: mheon
Diffstat (limited to 'libpod/runtime_pod_infra_linux.go')
-rw-r--r-- | libpod/runtime_pod_infra_linux.go | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/libpod/runtime_pod_infra_linux.go b/libpod/runtime_pod_infra_linux.go new file mode 100644 index 000000000..9649a3138 --- /dev/null +++ b/libpod/runtime_pod_infra_linux.go @@ -0,0 +1,60 @@ +// +build linux + +package libpod + +import ( + "context" + + "github.com/containers/libpod/libpod/image" + "github.com/opencontainers/runtime-tools/generate" +) + +const ( + // IDTruncLength is the length of the pod's id that will be used to make the + // infra container name + IDTruncLength = 12 +) + +func (r *Runtime) makeInfraContainer(ctx context.Context, p *Pod, imgName, imgID string) (*Container, error) { + + // Set up generator for infra container defaults + g, err := generate.New("linux") + if err != nil { + return nil, err + } + + g.SetRootReadonly(true) + g.SetProcessArgs([]string{r.config.InfraCommand}) + + containerName := p.ID()[:IDTruncLength] + "-infra" + var options []CtrCreateOption + options = append(options, r.WithPod(p)) + options = append(options, WithRootFSFromImage(imgID, imgName, false)) + options = append(options, WithName(containerName)) + options = append(options, withIsInfra()) + + return r.newContainer(ctx, g.Config, options...) +} + +// createInfraContainer wrap creates an infra container for a pod. +// An infra container becomes the basis for kernel namespace sharing between +// containers in the pod. +func (r *Runtime) createInfraContainer(ctx context.Context, p *Pod) (*Container, error) { + if !r.valid { + return nil, ErrRuntimeStopped + } + + newImage, err := r.ImageRuntime().New(ctx, r.config.InfraImage, "", "", nil, nil, image.SigningOptions{}, false, false) + if err != nil { + return nil, err + } + + data, err := newImage.Inspect(ctx) + if err != nil { + return nil, err + } + imageName := newImage.Names()[0] + imageID := data.ID + + return r.makeInfraContainer(ctx, p, imageName, imageID) +} |