mirror of
https://github.com/containers/podman
synced 2024-10-20 01:03:51 +00:00
Merge pull request #13619 from rhatdan/systemd
Set systemd mode if entrypoint begins with /bin/sh -c
This commit is contained in:
commit
83d0729146
|
@ -304,7 +304,16 @@ func createContainerOptions(ctx context.Context, rt *libpod.Runtime, s *specgen.
|
|||
"/usr/sbin/init": true,
|
||||
"/usr/local/sbin/init": true,
|
||||
}
|
||||
if useSystemdCommands[command[0]] || (filepath.Base(command[0]) == "systemd") {
|
||||
// Grab last command incase this is launched from a shell
|
||||
cmd := command
|
||||
if len(command) > 2 {
|
||||
// Podman build will add "/bin/sh" "-c" to
|
||||
// Entrypoint. Remove and search for systemd
|
||||
if command[0] == "/bin/sh" && command[1] == "-c" {
|
||||
cmd = command[2:]
|
||||
}
|
||||
}
|
||||
if useSystemdCommands[cmd[0]] || (filepath.Base(cmd[0]) == "systemd") {
|
||||
useSystemd = true
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
package integration
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
. "github.com/containers/podman/v4/test/utils"
|
||||
|
@ -130,6 +132,31 @@ WantedBy=default.target
|
|||
Expect(conData[0].Config.SystemdMode).To(BeTrue())
|
||||
})
|
||||
|
||||
It("podman systemd in command triggers systemd mode", func() {
|
||||
containerfile := fmt.Sprintf(`FROM %s
|
||||
RUN mkdir -p /usr/lib/systemd/; touch /usr/lib/systemd/systemd
|
||||
CMD /usr/lib/systemd/systemd`, ALPINE)
|
||||
|
||||
containerfilePath := filepath.Join(podmanTest.TempDir, "Containerfile")
|
||||
err := ioutil.WriteFile(containerfilePath, []byte(containerfile), 0755)
|
||||
Expect(err).To(BeNil())
|
||||
session := podmanTest.Podman([]string{"build", "-t", "systemd", "--file", containerfilePath, podmanTest.TempDir})
|
||||
session.WaitWithDefaultTimeout()
|
||||
Expect(session).Should(Exit(0))
|
||||
|
||||
ctrName := "testCtr"
|
||||
run := podmanTest.Podman([]string{"create", "--name", ctrName, "systemd"})
|
||||
run.WaitWithDefaultTimeout()
|
||||
Expect(run).Should(Exit(0))
|
||||
|
||||
result := podmanTest.Podman([]string{"inspect", ctrName})
|
||||
result.WaitWithDefaultTimeout()
|
||||
Expect(result).Should(Exit(0))
|
||||
conData := result.InspectContainerToJSON()
|
||||
Expect(conData).To(HaveLen(1))
|
||||
Expect(conData[0].Config.SystemdMode).To(BeTrue())
|
||||
})
|
||||
|
||||
It("podman create container with --uidmap and conmon PidFile accessible", func() {
|
||||
ctrName := "testCtrUidMap"
|
||||
run := podmanTest.Podman([]string{"run", "-d", "--uidmap=0:1:1000", "--name", ctrName, ALPINE, "top"})
|
||||
|
|
Loading…
Reference in a new issue