diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2021-01-06 15:26:55 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-06 15:26:55 -0500 |
commit | 8e4613ab0a57cf19f63d00a6426a9dee2489d3e6 (patch) | |
tree | 1a050d5573ae108b3693107b76c93b9562e73af2 /libpod | |
parent | 9198ed40e133fd2432ea1207008a02d4b70b99a1 (diff) | |
parent | 8f844a66d5d144eeb92870c27171dc8b35788d4f (diff) | |
download | podman-8e4613ab0a57cf19f63d00a6426a9dee2489d3e6.tar.gz podman-8e4613ab0a57cf19f63d00a6426a9dee2489d3e6.tar.bz2 podman-8e4613ab0a57cf19f63d00a6426a9dee2489d3e6.zip |
Merge pull request #8892 from mheon/fix_8886
Ensure that user-specified HOSTNAME is honored
Diffstat (limited to 'libpod')
-rw-r--r-- | libpod/container_internal_linux.go | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/libpod/container_internal_linux.go b/libpod/container_internal_linux.go index 05b149e03..cefe12209 100644 --- a/libpod/container_internal_linux.go +++ b/libpod/container_internal_linux.go @@ -529,14 +529,37 @@ func (c *Container) generateSpec(ctx context.Context) (*spec.Spec, error) { } } + // Hostname handling: + // If we have a UTS namespace, set Hostname in the OCI spec. + // Set the HOSTNAME environment variable unless explicitly overridden by + // the user (already present in OCI spec). If we don't have a UTS ns, + // set it to the host's hostname instead. + hostname := c.Hostname() + foundUTS := false for _, i := range c.config.Spec.Linux.Namespaces { if i.Type == spec.UTSNamespace && i.Path == "" { - hostname := c.Hostname() + foundUTS = true g.SetHostname(hostname) - g.AddProcessEnv("HOSTNAME", hostname) break } } + if !foundUTS { + tmpHostname, err := os.Hostname() + if err != nil { + return nil, err + } + hostname = tmpHostname + } + needEnv := true + for _, checkEnv := range g.Config.Process.Env { + if strings.SplitN(checkEnv, "=", 2)[0] == "HOSTNAME" { + needEnv = false + break + } + } + if needEnv { + g.AddProcessEnv("HOSTNAME", hostname) + } if c.config.UTSNsCtr != "" { if err := c.addNamespaceContainer(&g, UTSNS, c.config.UTSNsCtr, spec.UTSNamespace); err != nil { |