summaryrefslogtreecommitdiff
path: root/libpod
diff options
context:
space:
mode:
authorwuhua.ck <wuhua.ck@alibaba-inc.com>2021-04-15 22:36:50 +0800
committerchenkang <kongchen28@gmail.com>2021-04-16 13:43:14 +0800
commit8fbe06b8cbd8e3bc425d83130d562eb0c19f309b (patch)
treedb52b4259b92ad6fb30bbe3ff07d01eb7ce208ef /libpod
parent373f15f617db6731c58776c1766a4cf2c74b22b9 (diff)
downloadpodman-8fbe06b8cbd8e3bc425d83130d562eb0c19f309b.tar.gz
podman-8fbe06b8cbd8e3bc425d83130d562eb0c19f309b.tar.bz2
podman-8fbe06b8cbd8e3bc425d83130d562eb0c19f309b.zip
add flag "--pidfile" for podman create/run
Signed-off-by: chenkang <kongchen28@gmail.com>
Diffstat (limited to 'libpod')
-rw-r--r--libpod/container_config.go2
-rw-r--r--libpod/oci_conmon_linux.go7
-rw-r--r--libpod/options.go11
3 files changed, 19 insertions, 1 deletions
diff --git a/libpod/container_config.go b/libpod/container_config.go
index be24b54d6..e6c3be1bd 100644
--- a/libpod/container_config.go
+++ b/libpod/container_config.go
@@ -364,4 +364,6 @@ type ContainerMiscConfig struct {
Timezone string `json:"timezone,omitempty"`
// Umask is the umask inside the container.
Umask string `json:"umask,omitempty"`
+ // PidFile is the file that saves the pid of the container process
+ PidFile string `json:"pid_file,omitempty"`
}
diff --git a/libpod/oci_conmon_linux.go b/libpod/oci_conmon_linux.go
index 5e8ed12e7..c5735d114 100644
--- a/libpod/oci_conmon_linux.go
+++ b/libpod/oci_conmon_linux.go
@@ -1025,7 +1025,12 @@ func (r *ConmonOCIRuntime) createOCIContainer(ctr *Container, restoreOptions *Co
}
}
- args := r.sharedConmonArgs(ctr, ctr.ID(), ctr.bundlePath(), filepath.Join(ctr.state.RunDir, "pidfile"), ctr.LogPath(), r.exitsDir, ociLog, ctr.LogDriver(), logTag)
+ pidfile := ctr.config.PidFile
+ if pidfile == "" {
+ pidfile = filepath.Join(ctr.state.RunDir, "pidfile")
+ }
+
+ args := r.sharedConmonArgs(ctr, ctr.ID(), ctr.bundlePath(), pidfile, ctr.LogPath(), r.exitsDir, ociLog, ctr.LogDriver(), logTag)
if ctr.config.Spec.Process.Terminal {
args = append(args, "-t")
diff --git a/libpod/options.go b/libpod/options.go
index 333a7c4a5..5cd0f7b88 100644
--- a/libpod/options.go
+++ b/libpod/options.go
@@ -1692,6 +1692,17 @@ func WithSecrets(secretNames []string) CtrCreateOption {
}
}
+// WithPidFile adds pidFile to the container
+func WithPidFile(pidFile string) CtrCreateOption {
+ return func(ctr *Container) error {
+ if ctr.valid {
+ return define.ErrCtrFinalized
+ }
+ ctr.config.PidFile = pidFile
+ return nil
+ }
+}
+
// Pod Creation Options
// WithInfraImage sets the infra image for libpod.