summaryrefslogtreecommitdiff
path: root/libpod
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2021-01-06 15:26:55 -0500
committerGitHub <noreply@github.com>2021-01-06 15:26:55 -0500
commit8e4613ab0a57cf19f63d00a6426a9dee2489d3e6 (patch)
tree1a050d5573ae108b3693107b76c93b9562e73af2 /libpod
parent9198ed40e133fd2432ea1207008a02d4b70b99a1 (diff)
parent8f844a66d5d144eeb92870c27171dc8b35788d4f (diff)
downloadpodman-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.go27
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 {