rootless: create compatible pod infra container
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com> Closes: #1372 Approved by: mheon
This commit is contained in:
parent
14c0f9d63c
commit
4d12974214
|
|
@ -8,6 +8,7 @@ import (
|
||||||
"github.com/containers/libpod/libpod/image"
|
"github.com/containers/libpod/libpod/image"
|
||||||
"github.com/containers/libpod/pkg/rootless"
|
"github.com/containers/libpod/pkg/rootless"
|
||||||
"github.com/cri-o/ocicni/pkg/ocicni"
|
"github.com/cri-o/ocicni/pkg/ocicni"
|
||||||
|
spec "github.com/opencontainers/runtime-spec/specs-go"
|
||||||
"github.com/opencontainers/runtime-tools/generate"
|
"github.com/opencontainers/runtime-tools/generate"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -25,9 +26,22 @@ func (r *Runtime) makeInfraContainer(ctx context.Context, p *Pod, imgName, imgID
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isRootless := rootless.IsRootless()
|
||||||
|
|
||||||
g.SetRootReadonly(true)
|
g.SetRootReadonly(true)
|
||||||
g.SetProcessArgs([]string{r.config.InfraCommand})
|
g.SetProcessArgs([]string{r.config.InfraCommand})
|
||||||
|
|
||||||
|
if isRootless {
|
||||||
|
g.RemoveMount("/dev/pts")
|
||||||
|
devPts := spec.Mount{
|
||||||
|
Destination: "/dev/pts",
|
||||||
|
Type: "devpts",
|
||||||
|
Source: "devpts",
|
||||||
|
Options: []string{"private", "nosuid", "noexec", "newinstance", "ptmxmode=0666", "mode=0620"},
|
||||||
|
}
|
||||||
|
g.AddMount(devPts)
|
||||||
|
}
|
||||||
|
|
||||||
containerName := p.ID()[:IDTruncLength] + "-infra"
|
containerName := p.ID()[:IDTruncLength] + "-infra"
|
||||||
var options []CtrCreateOption
|
var options []CtrCreateOption
|
||||||
options = append(options, r.WithPod(p))
|
options = append(options, r.WithPod(p))
|
||||||
|
|
@ -38,7 +52,7 @@ func (r *Runtime) makeInfraContainer(ctx context.Context, p *Pod, imgName, imgID
|
||||||
// Since user namespace sharing is not implemented, we only need to check if it's rootless
|
// Since user namespace sharing is not implemented, we only need to check if it's rootless
|
||||||
portMappings := make([]ocicni.PortMapping, 0)
|
portMappings := make([]ocicni.PortMapping, 0)
|
||||||
networks := make([]string, 0)
|
networks := make([]string, 0)
|
||||||
options = append(options, WithNetNS(portMappings, rootless.IsRootless(), networks))
|
options = append(options, WithNetNS(portMappings, isRootless, networks))
|
||||||
|
|
||||||
return r.newContainer(ctx, g.Config, options...)
|
return r.newContainer(ctx, g.Config, options...)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue