mirror of https://github.com/containers/podman.git
Merge pull request #22112 from Luap99/remote-buildah-isolation
fix remote build isolation when server runs as root
This commit is contained in:
commit
aaa6dc3cc6
|
@ -400,9 +400,14 @@ func buildFlagsWrapperToOptions(c *cobra.Command, contextDir string, flags *Buil
|
|||
compression = buildahDefine.Uncompressed
|
||||
}
|
||||
|
||||
isolation, err := parse.IsolationOption(flags.Isolation)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
isolation := buildahDefine.IsolationDefault
|
||||
// Only parse the isolation when it is actually needed as we do not want to send a wrong default
|
||||
// to the server in the remote case (root vs rootless).
|
||||
if flags.Isolation != "" {
|
||||
isolation, err = parse.IsolationOption(flags.Isolation)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
usernsOption, idmappingOptions, err := parse.IDMappingOptions(c, isolation)
|
||||
|
|
|
@ -383,10 +383,19 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
// make sure to force rootless as rootless otherwise buildah runs code which is intended to be run only as root.
|
||||
if isolation == buildah.IsolationOCI && rootless.IsRootless() {
|
||||
isolation = buildah.IsolationOCIRootless
|
||||
// Make sure to force rootless as rootless otherwise buildah runs code which is intended to be run only as root.
|
||||
// Same the other way around: https://github.com/containers/podman/issues/22109
|
||||
switch isolation {
|
||||
case buildah.IsolationOCI:
|
||||
if rootless.IsRootless() {
|
||||
isolation = buildah.IsolationOCIRootless
|
||||
}
|
||||
case buildah.IsolationOCIRootless:
|
||||
if !rootless.IsRootless() {
|
||||
isolation = buildah.IsolationOCI
|
||||
}
|
||||
}
|
||||
|
||||
registry = ""
|
||||
format = query.OutputFormat
|
||||
} else {
|
||||
|
|
|
@ -54,6 +54,16 @@ var _ = Describe("run basic podman commands", func() {
|
|||
Expect(runAlp).To(Exit(0))
|
||||
Expect(runAlp.outputToString()).To(ContainSubstring("Alpine Linux"))
|
||||
|
||||
contextDir := GinkgoT().TempDir()
|
||||
cfile := filepath.Join(contextDir, "Containerfile")
|
||||
err = os.WriteFile(cfile, []byte("FROM quay.io/libpod/alpine_nginx\nRUN ip addr\n"), 0o644)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
build, err := mb.setCmd(bm.withPodmanCommand([]string{"build", contextDir})).run()
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(build).To(Exit(0))
|
||||
Expect(build.outputToString()).To(ContainSubstring("COMMIT"))
|
||||
|
||||
rmCon, err := mb.setCmd(bm.withPodmanCommand([]string{"rm", "-a"})).run()
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(rmCon).To(Exit(0))
|
||||
|
|
Loading…
Reference in New Issue